将 IEnumerable<MyClass> 映射到 class
Map IEnumerable<MyClass> to a class
我有一个名为 MyClass
的 class,它有一堆属性(字符串、布尔值、整数等)。
我还有一个 IEnumerable<SomeOtherClass>
collection,其中有 key/value 个项目。
我想将此 key/value 项列表映射到 MyClass
中的各种属性
有没有办法用 AutoMapper 或其他方式用反射来做到这一点?
谢谢!
正常方法
SomeClass cls = new SomeClass();
Type type = cls.GetType();
foreach (SomeOtherClass somecls in IEnumerableClass)
type.GetProperty(somecls.KeyPropName).SetValue(cls, somecls.ValuePropName, null);
OR 扩展方法,如果 IEnumerable class 是键值对集合
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>();
或
SomeClass somecls = ToObject(IEnumerableClass);
我有一个名为 MyClass
的 class,它有一堆属性(字符串、布尔值、整数等)。
我还有一个 IEnumerable<SomeOtherClass>
collection,其中有 key/value 个项目。
我想将此 key/value 项列表映射到 MyClass
有没有办法用 AutoMapper 或其他方式用反射来做到这一点?
谢谢!
正常方法
SomeClass cls = new SomeClass();
Type type = cls.GetType();
foreach (SomeOtherClass somecls in IEnumerableClass)
type.GetProperty(somecls.KeyPropName).SetValue(cls, somecls.ValuePropName, null);
OR 扩展方法,如果 IEnumerable class 是键值对集合
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>();
或
SomeClass somecls = ToObject(IEnumerableClass);