.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();
}
遵循这些步骤应该有效:
- 添加AutoMapper.Extensions.Microsoft.DependencyInjection NuGet
包裹
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();
}
当我使用 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();
}
遵循这些步骤应该有效:
- 添加AutoMapper.Extensions.Microsoft.DependencyInjection NuGet 包裹
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();
}