2008-09-23 5 views

Répondre

11

Vous pouvez utiliser l'injection de dépendance du pauvre homme:

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

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

Vous pouvez créer un IModelBinder qui tourne une instance d'une usine - ou, oui, le récipient. =)

16

Une façon est de créer un ControllerFactory:

public class MyControllerFactory : DefaultControllerFactory 
{ 
    public override IController CreateController(
     RequestContext requestContext, string controllerName) 
    { 
     return [construct your controller here] ; 
    } 
} 

Puis, en Global.asax.cs:

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