2012-02-06 22 views
5

100以上のフィールドと値の辞書コレクションがあります。このコレクションを使用して100のフィールドを持つ巨大なクラスを作成する方法はありますか?辞書からクラスを作成する

この辞書のキーは、myクラスのプロパティ名に対応し、値はクラスのプロパティの値になります。

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

あなたは指定された型のプロパティのリストを取得し、指定されたプロパティの特定の値を設定するためにSetValueを使用するGetPropertiesを使用することができます。

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 }); 
} 
関連する問題