我有一个对象 instance
为此
instance.GetType().GetGenericTypeDefinition() == typeof(Dictionary<,>)
是真的。我的问题是,如何在不知道其泛型类型的情况下从该对象中提取键值对?我想得到类似 KeyValuePair<object, object>[]
的东西.请注意,我也知道字典在运行时(但不是编译时)使用的泛型类型。我假设需要某种反射(reflection)?
跟进:是否有一种通用机制来转换 object
至 SomeClass<>
(当然,如果我知道这是正确的类型)并因此使用它,假设类的实现不受泛型参数类型的影响?
最佳答案
我会按照 Jeremy Todd 所说的去做,除了可能会短一点:
foreach(var item in (dynamic)instance)
{
object key = item.Key;
object val = item.Value;
}
作为旁注(不确定是否有帮助),您可以获得这样的参数类型:
Type[] genericArguments = instance.GetType().GetGenericArguments();
关于c# - 在不知道其类型的情况下获取字典键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16503773/