Вопрос по asp.net-mvc, .net, c# – Параметры конструктора для контроллеров без контейнера DI для ASP.NET MVC

7

У кого-нибудь есть примеры кода о том, как создавать контроллеры, которые имеют параметры, отличные от использования контейнера внедрения зависимости?

Я вижу множество примеров с использованием контейнеров, таких как StructureMap, но ничего, если вы хотите передать класс зависимостей самостоятельно.

Ваш Ответ

3   ответа
11

Вы можете использовать инъекцию зависимостей бедного человека:

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

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

Одним из способов является создание 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());
    }
1

Вы можете создать IModelBinder, который раскручивает экземпляр с фабрики - или, да, из контейнера. знак равно

Похожие вопросы