查找并验证所有自动映射器映射

Ron*_*Ron 5 c# automapper

我希望能够遍历映射为源(或目标)的每种类型的程序集,并验证映射配置是否有效。这是一个相当大的项目,广泛使用 AutoMapper,我希望这个单元测试在开发人员引入无效的映射关系时中断。查看 GetAllMappedTypes、GetPropertyMaps 的集合,但我似乎无法找到检查有效配置的方法。我们正在使用 AutoMapper v4。

C B*_*uer 3

自动映射器代码是:

<Perform mapping configuration work>

Mapper.AssertConfigurationIsValid()
Run Code Online (Sandbox Code Playgroud)

如果您使用 nunit,您可以执行以下操作:

    [TestFixture]
    public class when_validating_mapping_config
    {
        [Test]
        public void then_should_assert_mapping_configuration_is_valid()
        {
            // Arrange
            MappingConfig.InitializeMappings(); // this is just however you initialize your mappings.

            // Act

            // Assert
            Mapper.AssertConfigurationIsValid();
        }
    }
Run Code Online (Sandbox Code Playgroud)

映射配置只是我初始化映射的方式。我在 MVC 中使用 automapper,因此所有静态配置都发生在 Global.asax.cs 中。

public static class MappingConfig
{
    public static void InitializeMappings()
    {
        Mapper.Initialize(configuration => Configure(configuration));
    }

    public static void Configure(IConfiguration configuration)
    {

        configuration.CreateMap<Model, ViewModel>()
        configuration.Seal();
    }
}
Run Code Online (Sandbox Code Playgroud)