C# 地图IEnumerable<;MyClass>;上课

C# 地图IEnumerable<;MyClass>;上课,c#,reflection,automapper,C#,Reflection,Automapper,我有一个名为MyClass的类,它有一系列属性(字符串、布尔值、整数等) 我还有一个IEnumerable集合,其中包含键/值项 我想将此键/值项列表映射到MyClass 有没有一种方法可以通过AutoMapper或反射来实现这一点 谢谢 常规方法 SomeClass cls = new SomeClass(); Type type = cls.GetType(); foreach (SomeOtherClass somecls in IEnumerableClass) type.Ge

我有一个名为
MyClass
的类,它有一系列属性(字符串、布尔值、整数等)

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

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

有没有一种方法可以通过AutoMapper或反射来实现这一点

谢谢

常规方法

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>();
SomeClass somecls = ToObject(IEnumerableClass);