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

本文关键字:填充 目标值 单个源 映射 | 更新日期: 2023-09-27 18:24:32

我的DTO(目的地)有一堆布尔值。

例如:

HasThisOption
HasThatOption
HasSomeOtherOption

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

简单的解决方案是从我的控制器中调用一个函数。。e.PopulateFields(源、目标)

但我不想对映射器配置中的每个目标字段都调用Ignore。。因为大约有40个。。。它看起来很乱,真的没有任何意义。

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

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

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

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

如果源类型中不存在布尔字段,那么在标准映射过程中它们将被忽略,并且在目标中具有默认值。AfterMap方法允许您更改它们。