有趣的嵌套对象场景的自动映射配置

时间:2012-03-09 18:35:29

标签: automapper nested-class

我有一个有趣的场景,答案是不会向我跳出来。我已经找到了其他类似的问题,但似乎都没有解决这类问题。

在你提问之前,我无法控制源类布局。

我的源对象如下所示:

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之外做一些手动属性副本。

任何建议都表示赞赏。

1 个答案:

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