C# 简单注入器寄存器自动映射器
我想用Simple Injector注册Automapper,将其注入控制器:C# 简单注入器寄存器自动映射器,c#,asp.net-mvc,dependency-injection,automapper,simple-injector,C#,Asp.net Mvc,Dependency Injection,Automapper,Simple Injector,我想用Simple Injector注册Automapper,将其注入控制器: public class MyController : BaseController { private IUnitOfWork unitOfWork; private IMappingEngine mappingEngine; public PatientController(IUnitOfWork _unitOfWork, IMappingEngine _mappingEngine)
public class MyController : BaseController
{
private IUnitOfWork unitOfWork;
private IMappingEngine mappingEngine;
public PatientController(IUnitOfWork _unitOfWork, IMappingEngine _mappingEngine)
{
this.unitOfWork = _unitOfWork;
this.mappingEngine = _mappingEngine;
}
}
然而,当我试图注册它
public static void Initialize()
{
//Code for registering our repository class and DI
var container = new Container();
container.Register<IUnitOfWork, UnitOfWork>();
container.Register<IMappingEngine, MappingEngine>();
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
DependencyResolver.SetResolver(
new SimpleInjectorDependencyResolver(container));
}
publicstaticvoidinitialize()
{
//用于注册存储库类和DI的代码
var container=新容器();
container.Register();
container.Register();
container.RegisterMvcControllers(Assembly.getExecutionGassembly());
DependencyResolver.SetResolver(
新的SimpleInjectorDependencyResolver(容器));
}
我有一个错误:
为了使容器能够创建MappingEngine,它应该只包含一个公共构造函数,但它有2个
参数名称:TImplementation
我做错了什么?Simple Injector无法为您自动连接
MappingEngine
类型,而且它不应该自动连接,因为这是一种框架类型,正如您所看到的,框架类型不应该自动连接
相反,使用手动接线,如下所示:
var container = new Container();
container.RegisterSingle<IMappingEngine>(Mapper.Engine);
var container=newcontainer();
container.RegisterSingle(Mapper.Engine);
您是否检查了MappingEngine的构造函数,并查看在MappingEngine中注入的类型是否已注册?也可以尝试下面的内容,也可以阅读本文来理解为什么Simple Injector强制使用一个构造函数,以及如何将框架类型作为异常处理。谢谢,这正是我需要的,工作非常完美,你救了我的命,非常感谢