如何在n层ASP .net MVC应用程序中配置Unity

时间:2010-12-14 00:01:47

标签: asp.net-mvc ioc-container

我在确定如何在我的n层ASP .net MVC应用程序中配置Unity IoC容器时遇到一些问题。

我的解决方案中有3个项目: 1. MVC(用作视图):仅适用于业务逻辑层 2.业务逻辑层:仅参考存储库项目 3.资源库:不参考上述任何项目

请注意我的参考工作方式,我已经这样做了,所以我将能够用较少的困难替换我的层之间的通信。

我已经在我的MVC应用程序中配置了一个Unity容器,这样做(Global.asax):

container.RegisterType(); // MyService位于我的业务逻辑层

MyService类在其构造函数中使用我的存储库,这意味着当创建其中一个MyService类时,还需要一个MyRepository:

public MyService(IRepository repository):base(repository)  {}

如您所见,我仍然没有在容器中配置IRepository。

我不想在我的Global.asax中这样做,因为我不想将任何Repository引用添加到MVC(View)层。

配置此位置的最佳位置在哪里?我有点困惑....

提前致谢。

3 个答案:

答案 0 :(得分:2)

您是否尝试过:http://mvcunity.codeplex.com/

答案 1 :(得分:1)

让我告诉你到目前为止我做了什么:

我在我的Service and Repository中创建了一个静态类,我在View Layer(MVC)中创建Unity容器并将其传递给那些静态类,它们用容器和下一层填充容器,例如服务层也调用我的存储库中的静态类。

这样我就可以使用我需要的东西配置容器。

问题是:这是一件好事吗?

答案 2 :(得分:0)

如果我们使用Unity。我们可以在中间层实现Unity容器的扩展,并在Presentation层中注册,如下所示。

          //Data Layer dependency mapping as extension eg : IUnitOfWork
            container.AddNewExtension<DependencyInjectionExtension>();

更多详情请关注文章。

N-tier with DI (Unity)

由于