Jai*_*ews 1 asp.net-mvc dependency-injection unity-container asp.net-mvc-4
我在asp.net MVC 4中使用Unity.Mvc4并且内置Bootstrapper文件来注册所有类型,如下所示.
public static class Bootstrapper
{
public static IUnityContainer Initialise()
{
var container = BuildUnityContainer();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
return container;
}
-----------------------
------------------------
Run Code Online (Sandbox Code Playgroud)
在我的Controller构造函数中,我正在注入IUnityContainer本身以按需调用Resolve(),如下所示
private IQuestionBusinessLogic _qstnBL;
public MyController(IUnityContainer unityContainer)
: base(unityContainer)
{
qstnBL = _unityContainer.Resolve<IQuestionBusinessLogic>();
}
Run Code Online (Sandbox Code Playgroud)
查询是
这是构建课程的一种非常糟糕的方法.您不必在服务之间建立明确的依赖关系,而是依赖于特定的IoC框架来破坏您的类.
IoC成为您班级设计中不可或缺的一部分.它不是一个"看不见的帮手",而是一流的公民.
相反,你应该让你的类依赖于你的其他类:
public MyController( IQuestionBusinessLogic questionBusinessLogic )
: base()
{
}
Run Code Online (Sandbox Code Playgroud)
并让特定的依赖项解析器满足您的依赖项.这样您就可以从IoC依赖项中释放您的基础架构.具体来说,依赖项解析器是在应用程序的Composition Root部分中定义的(很可能是解决方案的主要项目),它是唯一将类粘合到特定IoC的类.
使用IoC框架的一个重要原则是"设计您的类和依赖关系,好像没有IoC框架.然后,只介绍一个帮助您,而不是让您依赖它".
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |