2012-02-06 3 views
5

나는 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;} 
} 
+0

당신을 클래스를 채우는 것을 의미합니까? 또는 클래스를 생성합니까? 그것이 전자의 경우, 리플렉션을 사용하십시오. – ColinE

+0

클래스에 각 데이터를 설명 할 수있는 인터페이스 또는 유형의 컬렉션 클래스가 아니라 수백 개의 속성이있는 이유가 있습니까? –

답변

8

당신은 주어진 형식에 대한 속성의 목록을 얻으려면 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

사용

MyClass yourinstance... 

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