自动映射器:从单个源值填充多个目标值

我的DTO(目标)具有许多布尔值.

例如:

HasThisOption
HasThatOption
HasSomeOtherOption

通过在模型对象(源)的一个字段上进行一些计算来填充这些值.这种计算有点昂贵,所以我不想对DTO上的每个字段都进行相同的计算,而是只运行一次计算.

一个简单的解决方案是只从我的控制器调用一个函数.即:.PopulateFields(source,dest)

但是我不想在我的映射器配置中为每个目标字段调用“忽略” ..因为它们大约有40个……而且看起来很凌乱,这样做确实没有任何意义.

在这种情况下通常会做什么?

解决方法:

在定义源类型和目标类型之间的映射时,可以使用AfterMap:

Mapper.CreateMap<Source, Dest>().AfterMap((source, dest) =>
{
    // do your custom computations and assignments here
});

如果源类型中不存在布尔字段,则在标准映射过程中无论如何它们都将被忽略,并且它们的默认值在目标中. AfterMap方法允许您更改它们.

上一篇:c#-将具有相同名称的字段映射到自动映射器中的不同文件


下一篇:找不到自动地图参考C#