C# 从字典中填充类

C# 从字典中填充类,c#,.net,performance,reflection,C#,.net,Performance,Reflection,我有一个超过100个字段和值的字典集合。有没有一种方法可以使用这个集合用100个字段填充一个巨大的类 此字典中的键对应于我的类的属性名称,该值将是该类的属性值 Dictionary<string, object> myDictionary = new Dictionary<string, object>(); myDictionary.Add("MyProperty1", "Hello World"); myDictionary.Add("MyProperty2", Da

我有一个超过100个字段和值的字典集合。有没有一种方法可以使用这个集合用100个字段填充一个巨大的类

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

Dictionary<string, object> myDictionary = new Dictionary<string, object>();
myDictionary.Add("MyProperty1", "Hello World");
myDictionary.Add("MyProperty2", DateTime.Now);
myDictionary.Add("MyProperty3", true);
您可以使用获取给定类型的属性列表,并使用设置给定属性的特定值:

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


你是说填充这个类吗?还是生成类?如果是前者,就使用反射。你的类有数百个属性,而不是可以描述每一段数据的接口或类型的集合类,这有什么原因吗?
MyClass myObj = new MyClass();
...
foreach (var pi in typeof(MyClass).GetProperties())
{
     object value;
     if (myDictionary.TryGetValue(pi.Name, out value)
     {
          pi.SetValue(myObj, value);
     }
}
MyClass yourinstance...

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