从Dictionary中填充一个类

时间:2012-02-06 20:52:15

标签: c# .net performance reflection

我有一个包含100多个字段和值的字典集合。有没有办法使用这个集合填充一个包含100个字段的巨大类?

此词典中的键对应于我的类的属性名称,值将是该类的属性的值。

Dictionary<string, object> myDictionary = new Dictionary<string, object>();
myDictionary.Add("MyProperty1", "Hello World");
myDictionary.Add("MyProperty2", DateTime.Now);
myDictionary.Add("MyProperty3", true);

填充以下类的属性。

public class MyClass
{
   public string MyProperty1 {get;set;}
   public DateTime MyProperty2 {get;set;}
   public bool MyProperty3 {get;set;}
}

2 个答案:

答案 0 :(得分:9)

您可以使用GetProperties获取给定类型的属性列表,并使用SetValue为给定属性设置特定值:

MyClass myObj = new MyClass();
...
foreach (var pi in typeof(MyClass).GetProperties())
{
     object value;
     if (myDictionary.TryGetValue(pi.Name, out value)
     {
          pi.SetValue(myObj, value);
     }
}

答案 1 :(得分:1)

使用

MyClass yourinstance...

foreach (var KVP in myDictionary)
{
    yourinstance.GetType().GetProperty ( KVP.Key ).GetSetMethod().Invoke ( yourinstance, new object[] { KVP.Value } );
}