Dostęp do statycznego Dictionary przez refleksje

0

Witam,

Słabo zaznajomiony jestem z refleksją i ciężko mi znaleźć coś w internecie. Dam najprostszy przykład z przedstawiający problem.


public class Car
{
      public static Dictionary<Wheel, bool> Wheels;
}

// gdzieś dalej w projekcie

public static Car GetWheelFromCar(CarEnum car)
{
      System.Type type = GetTypeOfCar(car);

      // i tutaj jak pobrać słownik mając tylko typ obiektu gdzie słownik jest statyczny

     var prop= type.GetProperty("Wheels"); 
     var dic = Dictionary<Wheel, bool>(prop.GetValue("???");
}
2

Może to ci pomoże.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

public struct Wheel
{
    public int Size { get; set; }
}

public class Car
{
    public static Dictionary<Wheel, bool> Wheels = new Dictionary<Wheel, bool>() { { new Wheel() { Size = 3 }, true }};
}

internal class Program
{
    private static void Main()
    {
        var carType = typeof(Car);
        var wheelsField = carType.GetField("Wheels");
        var dict = (Dictionary<Wheel, bool>) wheelsField.GetValue(null);

        Console.WriteLine("Test " + dict[new Wheel() { Size = 3 }]);
        Console.ReadLine();
    }
}
0

Działa, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0