在一些外部程序集已经在DI设置上添加了映射器配置之后,添加配置文件时遇到了麻烦。
首先我只是添加了一些代码来添加配置文件
var mapperConfiguration = new MapperConfiguration(cfg =>
{
cfg.AddProfile<DataMappingProfile>();
});
mapperConfiguration.AssertConfigurationIsValid();
services.AddSingleton<IMapper>(new Mapper(mapperConfiguration));
但是后来我改写了其他一些映射配置文件。
所以我在想,我应该尝试将我的添加到现有的映射配置中。
所以我就这样走
var sp = services.BuildServiceProvider();
var autoMapper = sp.GetService<IMapper>();
var mapperConfiguration = autoMapper?.ConfigurationProvider as MapperConfiguration;
var configuration = new MapperConfigurationExpression();
configuration.AddProfile<LpisMappingProfile>();
if (mapperConfiguration == null)
{
mapperConfiguration = new MapperConfiguration(configuration);
}
else
{
//add the previous as well
//?? add this `configuration` ?
}
mapperConfiguration.AssertConfigurationIsValid();
services.AddSingleton<IMapper>(new Mapper(mapperConfiguration));
但是我有点陷入else
流程中。
有什么建议吗?
thnx!
答案 0 :(得分:0)
那是不可能的。如果程序集使用私有的MapperConfiguration,那是它自己的事。如果要与应用程序协作,则不应定义MapperConfiguration,而应定义要由应用程序扫描并添加到应用程序拥有的单例MapperConfiguration的配置文件。 AM配置为只读,在初始化阶段之后无法更改。