【问题标题】:Create KeyValuePair instance with dynamic type arguments使用动态类型参数创建 KeyValuePair 实例
【发布时间】:2012-09-04 03:54:30
【问题描述】:

我正在寻找创建 KeyValuePair 实例并使用反射动态设置键和值的方法。

这是

的一部分
 foreach(var prop in this.GetType().GetProperties()) 

循环遍历属性并尝试根据某些条件恢复它们。 KeyValue Pair 似乎很复杂。

我有这两种类型定义

var keyType = prop.PropertyType.GetGenericArguments()[0]; 
var valueType = prop.PropertyType.GetGenericArguments()[1];

在这里我可以创建我的 KeyValuePair 的实例..

var keyValuePair = Activator.CreateInstance(prop.PropertyType); 

但是key和value都是外部只读属性,只能由构造函数设置。

有什么想法吗??

【问题讨论】:

  • 使用反射获取正确的带有键和值参数的ConstructorInfo,并使用它来调用构造函数。
  • KeyValuePair 中有什么类型的键?

标签: c# .net serialization reflection


【解决方案1】:

使用 Key 和 Value 的值调用构造函数:

var keyValuePair = Activator.CreateInstance(prop.PropertyType, new [] {key, val});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多