我有一个有趣的场景,答案是不会向我跳出来。我已经找到了其他类似的问题,但似乎都没有解决这类问题。
在你提问之前,我无法控制源类布局。
我的源对象如下所示:
class Class1
{
string string1
string string2
string string3
string string4
string string5
string string6
}
class Class2
{
string foo
string bar
}
class Class3 //The source object!!
{
Class1 Inner1
Class2 Inner2
}
我的目的地看起来像这样:
class Destination
{
string string1
string string2
string string3
string string4
string string5
string string6
string string7
}
实际上,Inner1是一个庞大的类,几乎是一个完美的匹配 - 除了几个例外。我想使用Automapper使用默认匹配直接复制从Inner1到Destination的所有内容,但也将Inner2.foo复制到Destination.string6,将Inner2.bar复制到Destination.string7。
编辑:我现在应该添加,我将Inner1映射到Destination,然后在Automapper之外做一些手动属性副本。
任何建议都表示赞赏。
答案 0 :(得分:0)
猜猜你现在有这样的事情:
Mapper.CreateMap<Inner1, Destination>();
...
var inner1 = GetInner1();
var destination = Mapper.Map<Destination>(inner1);
// now do manual hydration on destination using inner2 instance...
你可能能够逃脱这个:
Mapper.CreateMap<Inner1, Destination>();
Mapper.CreateMap<Inner2, Destination>()
.ForMember(d => d.string6, o => o.ResolveUsing(s => s.foo))
.ForMember(d => d.string7, o => o.ResolveUsing(s => s.bar))
;
...
var inner1 = GetInner1();
var destination = Mapper.Map<Destination>(inner1);
var inner2 = GetInner2();
Mapper.Map(inner2, destination);