2008-09-23 8 views

Respuesta

11

Usted puede usar la inyección de dependencia del hombre pobre: ​​

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

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

Se puede crear un IModelBinder que hace girar una instancia de una fábrica - o, sí, el contenedor. =)

16

Una forma es crear un ControllerFactory:

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

Luego, en Global.asax.cs:

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