簡體   English   中英

沒有用於ASP.NET MVC的DI容器的控制器的構造函數參數

[英]Constructor parameters for controllers without a DI container for ASP.NET MVC

有沒有人有關於如何創建具有除使用依賴注入容器之外的參數的控制器的任何代碼示例?

我看到很多樣本都使用像StructureMap這樣的容器,但是如果你想自己傳遞依賴類,那就什么都沒有。

一種方法是創建一個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());
    }

你可以使用窮人的依賴注入:

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

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

您可以創建一個IModelBinder,用於從工廠中旋轉實例 - 或者是,容器。 =)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM