2015-04-20 63 views
0

我有一個名爲MyClass的類,它有一堆屬性(字符串,布爾值,整數等)。將IEnumerable <MyClass>映射到類

我也有一個IEnumerable<SomeOtherClass>集合,其中包含鍵/值項目。

我想鍵/值項的這份名單中MyClass

映射到不同的屬性有沒有辦法與AutoMapper或反射另一種方式來做到這一點?

謝謝!

回答

0

普通方法

SomeClass cls = new SomeClass(); 
Type type = cls.GetType(); 
foreach (SomeOtherClass somecls in IEnumerableClass) 
    type.GetProperty(somecls.KeyPropName).SetValue(cls, somecls.ValuePropName, null); 

或擴展方法,如果IEnumerable的類是鍵值對集合

public static T ToObject<T>(this IDictionary<string, dynamic> source) where T : class 
{ 
    T obj = new T(); 
    Type type = obj.GetType(); 
    foreach (KeyValuePair<string, dynamic> item in source) 
     type.GetProperty(item.Key).SetValue(obj, item.Value, null); 
    return obj; 
} 

使用這種像下面。

SomeClass somecls = IEnumerableClass.ToObject<SomeClass>(); 

OR

SomeClass somecls = ToObject(IEnumerableClass); 
+0

感謝JAG - 工作一種享受 – AdrianSean

相關問題