我有一个名为MyClass
的类,它有一堆属性(字符串,bool,整数等)。
我还有一个IEnumerable<SomeOtherClass>
集合,其中包含键/值项。
我想将此键/值项列表映射到MyClass
有没有办法用AutoMapper或其他反射方式?
谢谢!
答案 0 :(得分:0)
正常方法
SomeClass cls = new SomeClass();
Type type = cls.GetType();
foreach (SomeOtherClass somecls in IEnumerableClass)
type.GetProperty(somecls.KeyPropName).SetValue(cls, somecls.ValuePropName, null);
OR扩展方法,如果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);