我有一个名为“instance”的对象。
instance.GetType().GetGenericTypeDefinition() == typeof(Dictionary<,>)
是真的。我的问题是,我如何从这个对象中提取键值对,而不实际知道它们的通用类型?我想得到类似于KeyValuePair<object, object>[]
的东西。请注意,我还知道字典在运行时使用的泛型类型(但不是编译时)。我假设需要某种反射?
后续:是否有一般机制将object
转换为SomeClass<>
(如果我知道这是正确的类型),并因此使用它,而不受泛型参数类型的影响?
IDictionary
接口。 - SLaksDictionary<,>
的答案,但我想知道是否有一种方法可以动态地转换任何需要泛型参数的对象,以便我可以使用它。 - nickolayratchevToList
方法返回一个KeyValuePair列表:var keyValuePairList = instance.ToList();
。这是你想要的吗(在你的后续操作之前)?还是我漏掉了什么? - Steven Wexler.ToList()
,而这需要在运行时构造。 - Jeremy ToddDictionary<int,V>
填充的,其中V
可能会变化。填充列表框的函数只需将此字典作为IEnumerable
(循环遍历时给出KeyValuePair
s)即可。我面临的挑战是在我的通用函数中获取当前选定项的键的问题。最终,dynamic
起了作用。 - Stewart