我的DTO(目的地)有一堆布尔值。
例如:
HasThisOption
HasThatOption
HasSomeOtherOption
通过对模型对象(源)的某个字段进行一些计算来填充这些值。这个计算有点贵,因此我不想对DTO上的每个字段进行相同的计算,我只想运行一次计算。
简单的解决方案是从我的控制器中调用一个函数..即.. PopulateFields(source,dest)
但我不想在我的映射器配置中为每个目标字段调用Ignore ..因为它们中有大约40个......而且它看起来很麻烦,真的没有任何意义。< / p>
在这种情况下,人们通常会做些什么?
答案 0 :(得分:4)
在定义源和目标类型之间的映射时,可以使用AfterMap
:
Mapper.CreateMap<Source, Dest>().AfterMap((source, dest) =>
{
// do your custom computations and assignments here
});
如果源类型中不存在布尔字段,则在标准映射期间它们将被忽略,并且在目标中具有其默认值。 AfterMap
方法允许您更改它们。