Параметры конструктора для контроллеров без контейнера DI для ASP.NET MVC - PullRequest
7 голосов
/ 23 сентября 2008

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

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

Ответы [ 3 ]

16 голосов
/ 24 сентября 2008

Один из способов - создать 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());
    }
11 голосов
/ 23 сентября 2008

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

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

public ProductController(IFoo foo)
{
  _foo = foo;
}
1 голос
/ 24 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...