【发布时间】:2017-07-11 23:07:19
【问题描述】:
我正在尝试将我的 AutoMapper(版本 5.2.0)Profile 类注册到我的 Unity 容器(Unity 版本 4.0.1)中,但它给了我一个例外:
解析依赖失败,type = IConsumer`1[Commands.INewUserEmailCommand]", name = "(none)"。 异常发生时:解决时。异常是:InvalidOperationException - 当前类型 AutoMapper.IConfigurationProvider 是一个接口,无法构造。您是否缺少类型映射?
这是配置文件类:
public class AutoMapperBootstrap : Profile
{
public AutoMapperBootstrap()
{
this.CreateMap<IUserEmailDTO, MergeUserEmailRequest>();
}
}
这里是 Unity 注册 sn-p:
Profile typeMaps = new AutoMapperBootstrap();
var config = new MapperConfiguration(cfg => cfg.AddProfile(typeMaps));
container.RegisterInstance<IMapper>(config.CreateMapper(), new ContainerControlledLifetimeManager());
然后我有依赖于被注入的 IMapper 实例的构造函数,显然 Unity 对此一无所知,或者它需要一些额外的 IConfigurationProvider 实例?我错过了什么?当我的代码需要调用依赖于 IMapper 的服务时,Unity 会抛出上述异常。下面是一个使用构造函数注入尝试获取 IMapper 实例的服务示例。
public class FooService : IFooService
{
private readonly IMapper mapper;
public Foo(IMapper mapper)
{
this.mapper = mapper;
}
}
【问题讨论】:
-
我应该跳过容器注册并使用具有所有映射的静态实例吗?我正在考虑让一个静态构造函数初始化我的配置文件,以便它始终可用...
标签: c# automapper unity-container