Заполните класс из словаря - PullRequest
5 голосов
/ 07 февраля 2012

У меня есть словарь из более чем 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 ]

9 голосов
/ 07 февраля 2012

Вы можете использовать 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 голос
/ 07 февраля 2012

Использование

MyClass yourinstance...

foreach (var KVP in myDictionary)
{
    yourinstance.GetType().GetProperty ( KVP.Key ).GetSetMethod().Invoke ( yourinstance, new object[] { KVP.Value } );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...