繁体   English   中英

.net 核心中的应用程序启动期间的 Automapper 映射验证?

[英]Automapper mapping validation during application startup in .net core?

当我使用 Automapper v6(我使用 .net 核心)时,我有这个命令来验证配置:

   configuration.AssertConfigurationIsValid();

但是现在,在移动到最新版本后,我没有这个,因为我的配置完全是( docs ):

   private void ConfigureServices(IServiceCollection services)
        {
            services.AddAutoMapper(typeof(AppSettingsMappingProfile));    //marker type    
        }

但是,我仍然想在启动时验证所有映射。

文档说我需要这样做:

var configuration = new MapperConfiguration(cfg =>
  cfg.CreateMap<Source, Destination>());

configuration.AssertConfigurationIsValid();

但我没有它,因为我在这个命令中使用配置文件:

 services.AddAutoMapper(typeof(AppSettingsMappingProfile)); 

问题

如何在启动时仍然进行 AutoMapper 扫描以进行验证?

如果您查看AddAutoMapper的源代码,您将看到它将IConfigurationProvider注册为单例。 这意味着您可以安全地在 Configure 方法中使用它并在那里进行验证:

public void Configure(IConfigurationProvider pr)
{
    pr.AssertConfigurationIsValid();
}

遵循这些步骤应该有效:

  1. 添加AutoMapper.Extensions.Microsoft.DependencyInjection NuGet 包
  2. ConfigureServices(...) services.AddAutoMapper(typeof(...)) ConfigureServices(...)
  3. IMapper mapper作为参数添加到Configure(...)方法
  4. mapper.ConfigurationProvider.AssertConfigurationIsValid(); Configure(...)

示例(省略命名空间包含)

public void ConfigureServices(IServiceCollection services)
{
    services.AddAutoMapper(typeof(Startup));
}

public void Configure(IApplicationBuilder app, IMapper mapper)
{
    mapper.ConfigurationProvider.AssertConfigurationIsValid();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM