【发布时间】:2017-08-29 09:02:42
【问题描述】:
如何使 AutoMapper 将缺少的未映射属性映射到目标对象内的字典? (如序列化时的ExtensionData)
例子:
class Source
{
public int A {get;set;}
public int B {get;set;}
public int C {get;set;}
}
class Destination
{
public int A {get;set;}
public Dictionary<string, object> D {get;set;}
}
Source s = new Source { A = 1, B = 2, C = 3 };
Destination d = ... // Mapping code
现在我想要以下结果:
d.A ==> 1
d.D ==> {{ "B", 2 }, { "C", 3 }}
* 编辑 *
最后,我正在寻找没有反射的解决方案。含义:在设置/配置/初始化期间允许反射,但在映射本身期间,我不希望由反射引起任何延迟。
* 编辑 *
我正在寻找一个通用的解决方案,就像序列化程序一样。
【问题讨论】:
-
我不相信有一个内置函数可以做到这一点,但是您可以创建一个自定义解析器,使用反射来比较源和目标属性并从那里开始。
-
我已经在与自定义解析器搏斗了……但这很痛苦。我无法想象我是第一个涉足此领域的人,因为序列化程序具有此功能(还将数据从一个“对象”映射到另一个)。
标签: c# .net automapper-5