代码之家  ›  专栏  ›  技术社区  ›  Christopher Griffith

是否可能有一个字典,其中给定键/值对的值根据键强制为特定类型?

  •  0
  • Christopher Griffith  · 技术社区  · 8 年前

    具体来说,我试图创建一个字典,其中包含PropertyInfo类型的键和一个值,该值是一个列表,我希望强制该列表包含与键描述的关联属性相同类型的对象。换句话说,描述一组属性和要分配给它们的值的字典。

    我怀疑这可能是不可能的,因为编译器无法始终确定属性在运行时之前将具有的类型,但我希望我错过了一些可能允许它的内容。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Olexiy Sadovnikov    8 年前

    你没有错过任何东西。这是不可能的,因为没有与 PropertyInfo 在编译时。它甚至不是泛型类型(例如 List<T> ).

        2
  •  0
  •   Jakub Dąbek    8 年前

    您可以创建 Dictionary<PropertyInfo, dynamic>

    class MyClass
    {
        public int Property { get; set; }
    }
    
    var dict = new Dictionary<PropertyInfo, dynamic>();
    var propertyInfo = typeof(MyClass).GetProperty(nameof(MyClass.Property));
    
    dict.Add(propertyInfo, Activator.CreateInstance(typeof(List<>).MakeGenericType(propertyInfo.PropertyType)));
    

    dict[propertyInfo].GetType() List<int> ,但你不会像现在这样获得智能感知 dynamic

    推荐文章