我正在使用ASPMap Core和AutoMapper . 为了让DI运行,我使用AutoMapper.Extensions.Microsoft.DependencyInjection Nuget-Package并让AutoMapper通过注册配置文件
private static void InitializeAutoMapper(IServiceCollection services)
{
services.AddAutoMapper();
}
这样可以正常工作,但对于某些Profiles,我还想为它们注入一些依赖项,例如:
public class IndividualDtoProfile : Profile
{
private readonly IIndividualFactory _individualFactory;
private readonly IMapper _mapper;
public IndividualDtoProfile(IIndividualFactory individualFactory, IMapper mapper)
{
_individualFactory = individualFactory;
_mapper = mapper;
}
public IndividualDtoProfile()
{
CreateMap<Individual, IndividualDto>();
CreateMap<IndividualDto, Individual>()
.ConstructUsing(
dto =>
{
var gender = _mapper.Map<IndividualGender>(dto.Gender);
return _individualFactory.CreateIndividual(dto.FirstName, dto.LastName, gender, dto.BirthDate);
});
}
}
我找到的唯一相关讨论是:https://groups.google.com/forum/#!topic/automapper-users/5XK7pqGu_Tg
这几乎似乎暗示不使用现有可能性的优点,而是手动映射配置文件 . 我唯一看到的另一种可能性就是提供一个静态的ServiceProvider-Singleton,它看起来也不太吸引人 .
是否有可能将ASP.Net Core与AutoMapper一起使用并让依赖注入Profiles?
编辑:由于评论,可能我也有一些根本错误:我正在学习领域驱动设计,我有一个应用层 . 我想将从Web服务中使用的DTO映射回到域实体,我想,在那里使用工厂也是有意义的,否则我会绕过工厂中的逻辑 .
1 回答
根据设计,这不是开箱即用的 . 如果你想要它,你必须自己使用你的DI容器 . 这已经多次讨论过了 . 例如,here . docs .