Fin*_*las 14 asp.net-mvc dependency-injection
考虑:
public class HomeController : Controller
{
private IDependency dependency;
public HomeController(IDependency dependency)
{
this.dependency = dependency;
}
}
Run Code Online (Sandbox Code Playgroud)
事实上,ASP.NET MVC中的控制器必须有一个空的默认构造函数,除了在DI中定义一个空的(在我看来是无用的)构造函数之外还有什么办法吗?
如果要使用无参数构造函数,则必须定义自定义控制器工厂.Phil Haack有一篇关于这个主题的精彩博文.
如果您不想滚动自己的控制器工厂,可以在codeplex/github 的ASP.NET MVC Contrib项目中预先制作它们.
如果您设置自定义ControllerFactory以使用Ninject,AutoFac,Castle Windsor等依赖注入框架,则不必拥有空构造函数.其中大多数都具有CustomControllerFactory的代码,以使用您可以重用的容器.
问题是,默认控制器工厂不知道如何传递依赖.如果你不想使用上面提到的框架,你可以做所谓的穷人的依赖注入:
public class HomeController : Controller
{
private IDependency iDependency;
public HomeController() : this(new Dependency())
{
}
public HomeController(IDependency iDependency)
{
this.iDependency = iDependency;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7935 次 |
最近记录: |