Dostęp do statycznego Dictionary przez refleksje

Dostęp do statycznego Dictionary przez refleksje
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,

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

Kopiuj

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("???");
}
varmanpl
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 60
2

Może to ci pomoże.

Kopiuj
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();
    }
}
  • Rejestracja: dni
  • Ostatnio: dni
0

Działa, dzięki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.