首页 文章

通过Asp.Net Core Dependency注入添加AutoMapper并注入配置文件

提问于
浏览
-1

我正在使用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 回答

  • 1

    根据设计,这不是开箱即用的 . 如果你想要它,你必须自己使用你的DI容器 . 这已经多次讨论过了 . 例如,here . docs .

相关问题