向 Unity 注册自动映射器失败



>我有以下代码来注册映射(版本 4.2)

public class ModelMapperProfile : Profile
{
    protected override void Configure()
    {
        CreateMap<Case, CaseModel>();
        CreateMap<CaseDetail, CaseDetailModel>();
    }
}
public static class AutoMapperService
{
    public static MapperConfiguration Initialize()
    {
        MapperConfiguration config = new MapperConfiguration(cfg =>
        {
            cfg.AddProfile<ModelMapperProfile>();
        });
        return config;
    }
}

我使用统一注册依赖关系,如下所示...

public static void RegisterTypes(IUnityContainer container)
{
    container.LoadConfiguration();
    var mapper = AutoMapperService.Initialize()
                                .CreateMapper();
    container.RegisterInstance<IMapper>(mapper);
}

我在这里服务构造函数..

public TaxLiabilityCaseService(IMapper mapper,
        IUnitOfWork unitofWork,
        IRepository<Case> caseR,
        IRepository<CaseDetail> caseDetailR)
    {
        _mapper = mapper;
        _unitofWork = unitofWork;
        _caseR = caseR;
        _caseDetailR = caseDetailR;
    }

我收到以下错误消息..

当前类型AutoMapper.IMapper是一个接口,不能 构建。是否缺少类型映射?

这里找到的答案对我不起作用

我在这里错过了什么

请尝试执行以下步骤 (MVC5):

获取 Unity Nuget 包:

Unity.Mvc5

创建此类:

public class MapperConfig
    {
        public static IMapper Mapper { get; set; }
        public static void RegisterProfiles()
        {
            var config = new MapperConfiguration(cfg =>
            {
               // add profiles here
            });
            config.AssertConfigurationIsValid();
            Mapper = config.CreateMapper();
        }
    }

UnityConfig文件(由包创建)中,添加以下内容:

public static void RegisterComponents()
     {
          var container = new UnityContainer();
          container.RegisterInstance<IMapper>(MapperConfig.Mapper);
     }

Global.asax中添加以下内容:

protected void Application_Start()
        {
            MapperConfig.RegisterProfiles();
            UnityConfig.RegisterComponents(); 
        }

在这之后你应该很好。

最新更新