[英]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();
}
遵循这些步骤应该有效:
ConfigureServices(...)
services.AddAutoMapper(typeof(...))
ConfigureServices(...)
。IMapper mapper
作为参数添加到Configure(...)
方法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.