【发布时间】:2010-09-12 10:40:00
【问题描述】:
除了使用依赖注入容器之外,有没有人有关于如何创建具有参数的控制器的代码示例?
我看到很多使用 StructureMap 等容器的示例,但如果您想自己传递依赖类,则没有。
【问题讨论】:
标签: c# .net asp.net-mvc
除了使用依赖注入容器之外,有没有人有关于如何创建具有参数的控制器的代码示例?
我看到很多使用 StructureMap 等容器的示例,但如果您想自己传递依赖类,则没有。
【问题讨论】:
标签: c# .net asp.net-mvc
一种方法是创建一个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());
}
【讨论】:
你可以使用穷人的依赖注入:
public ProductController() : this( new Foo() )
{
//the framework calls this
}
public ProductController(IFoo foo)
{
_foo = foo;
}
【讨论】:
您可以创建一个 IModelBinder,它从工厂启动实例 - 或者,是的,容器。 =)
【讨论】: