将IEnumerable <myclass>映射到类</myclass>

时间:2015-04-20 13:46:34

标签: c# reflection automapper

我有一个名为MyClass的类,它有一堆属性(字符串,bool,整数等)。

我还有一个IEnumerable<SomeOtherClass>集合,其中包含键/值项。

我想将此键/值项列表映射到MyClass

中的各种属性

有没有办法用AutoMapper或其他反射方式?

谢谢!

1 个答案:

答案 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);