自动映射,重复地图

Automapping, duplicate maps

我目前正在将一些大对象从外部 API 映射到我们自己的对象。这是我第一次使用 Automapper,效果非常好。

我似乎找不到一个选项来检测映射器是否定义了两次或更多次。 也许这不是问题,但我想防止代码异味。 很难记住哪些地图已经创建,我不想每次添加映射器时都搜索我的代码。

此外,组织这些配置文件的最佳做法是什么?我已经有多个配置文件,但一个配置文件与嵌套对象深 4 层的大对象相关,已经超过 70 行 CreateMap<Leg, Contract.V1.Legs.Leg>().ReverseMap();

感觉这才是正确的做法。但作为automapper的新手,我想确定一下。

我不确定这是否可行,但您是否检查过是否可以使用 ArchUnitNET 创建一些规则?这是一个很棒的库,用于创建架构规则作为单元测试。

https://github.com/TNG/ArchUnitNET

编辑 1: 关于组织。我个人的选择是将所有 CreateMap 调用按字母顺序放在一个文件中,或者在处理一种有界上下文时按域放在一个文件中。

编辑 2: 找到了一种通过单元测试来做到这一点的方法。 AutoMapper 配置提供了为重复地图抛出的 AssertConfigurationIsValid。请参阅下面使用 Fluent Assertions 的示例:

[TestMethod]
public void MapperConfigurationValid()
{
    var configuration = AutoMapperProvider.MapperConfiguration;
    configuration
        .Invoking(c => c.AssertConfigurationIsValid())
        .Should()
        .NotThrow();
}