C# 没有用于ASP.NET MVC的DI容器的控制器的构造函数参数

C# 没有用于ASP.NET MVC的DI容器的控制器的构造函数参数,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,除了使用依赖项注入容器之外,有没有人有关于如何创建具有参数的控制器的代码示例 我看到很多使用StructureMap等容器的示例,但如果您想自己传入依赖项类,则什么都没有。您可以使用poor man的依赖项注入: public ProductController() : this( new Foo() ) { //the framework calls this } public ProductController(IFoo foo) { _foo = foo; } 您可以创建一个I

除了使用依赖项注入容器之外,有没有人有关于如何创建具有参数的控制器的代码示例


我看到很多使用StructureMap等容器的示例,但如果您想自己传入依赖项类,则什么都没有。

您可以使用poor man的依赖项注入:

public ProductController() : this( new Foo() )
{
  //the framework calls this
}

public ProductController(IFoo foo)
{
  _foo = foo;
}

您可以创建一个IModelBinder,它可以从工厂或容器中旋转实例

一种方法是创建ControllerFactory:

public class MyControllerFactory : DefaultControllerFactory
{
    public override IController CreateController(
        RequestContext requestContext, string controllerName)
    {
        return [construct your controller here] ;
    }
}
然后,在Global.asax.cs中:

    private void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
        ControllerBuilder.Current.SetControllerFactory(
            new MyNamespace.MyControllerFactory());
    }