自动映射器:从单个源值填充多个目标值
本文关键字:填充 目标值 单个源 映射 | 更新日期: 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
方法允许您更改它们。