2008-09-23 2 views
7

Есть ли у кого-нибудь примеры кода о том, как создавать контроллеры с параметрами, отличными от использования контейнера для инъекций зависимостей?Параметры конструктора для контроллеров без контейнера DI для ASP.NET MVC

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

ответ

11

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

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

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

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

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()); 
    } 
Смежные вопросы