2008-09-23 41 views

Trả lời

11

Bạn có thể sử dụng dependency injection kém của con người:

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

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

Bạn có thể tạo một IModelBinder mà quay lên một ví dụ từ một nhà máy - hoặc, vâng, thùng sơn. =)

16

Một cách là tạo ra một ControllerFactory:

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

Sau đó, trong Global.asax.cs:

private void Application_Start(object sender, EventArgs e) 
    { 
     RegisterRoutes(RouteTable.Routes); 
     ControllerBuilder.Current.SetControllerFactory(
      new MyNamespace.MyControllerFactory()); 
    } 
Các vấn đề liên quan