C# 简单注入器寄存器自动映射器

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)

我想用Simple Injector注册Automapper,将其注入控制器:

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强制使用一个构造函数,以及如何将框架类型作为异常处理。谢谢,这正是我需要的,工作非常完美,你救了我的命,非常感谢