加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

使用Unity.Mvc3实现依赖注入简介

发布时间:2020-05-27 21:11:09 所属栏目:程序设计 来源:互联网
导读:开始使用Unity.Mvc3 本文一步一步演示如何在MVC3项目中使用Unity.Mvc3实现依赖注入。 先创建一个基本的MVC3项目。 Figure 1: The Visual Studio 2010 New Project Dialog Figure 2: The Visual Studio 2010 New ASP.NET MVC3 Internet Application Template

开始使用Unity.Mvc3

本文一步一步演示如何在MVC3项目中使用Unity.Mvc3实现依赖注入。

先创建一个基本的MVC3项目。

Figure 1: The Visual Studio 2010 New Project Dialog

Figure 2: The Visual Studio 2010 New ASP.NET MVC3 Internet Application Template

通过NuGet将Unity.Mvc3加入到项目。.右击references选择Manage NuGet packages.。在弹出对话框 输入Unity.Mvc3 搜索。. 在搜索结果中选择Unity.Mvc3 安装。

Figure 3: Manage NuGet Packages Context Menu Item

Figure 4: Manage NuGet Packages Dialog

NuGet将安装Unity 和Unity.Mvc3并添加到引用,同时在项目中添加一些文件。 Bootstrapper.cs包含初始化Unity容器和DependencyResolver的代码。

在Global.asax 的Application_Start 方法中添加对Bootstrapper初始化方法的调用。

:-)

添加依赖

这里以一个简单的消息service为例,演示如何通过unity.Mvc3实现依赖注入。添加IMessageService接口和实现了此接口的MessageService。

修改HomeController,在HomeController中使用ImessageService。

最后,告诉unity我们的服务类MessageService。在Bootstrapper类的BuildUnityContainer 方法中使用RegisterType<TFrom,TTo>注册我们的接口和实现,完成接口和实现的Map。.

运行效果如下图所示。 MVC framework 告知DependencyResolver返回一个 HomeController。Resolver通过Unity获知 HomeController 需要一个明确的IMessageService接口实现。由于在初始化时注册了IMessageService接口和实现的Map, Unity 将实例化一个MessageService对象,注入到控制器中,返回给MVC framework。由此完成了依赖注入。

Figure 5: MVC View Displaying The Message Created By The The MessageService

添加依赖的依赖

增加一点复杂度。假设MessageService本事也有依赖,创建一个IMessageGenerator接口和实现.

修改MessageService:.

同样,将新的组件注册到Unity:

运行结果如图6所示。

Figure 6: MVC View Displaying The Message Created By The The MessageService And MessageGenerator

IDisposable依赖

最后,我们演示实现 IDisposable的依赖。. 无论使用NHibernate,Entity Framework或者 LINQ to SQL,必须在request之后释放context/session 。这里演示如何通过Unity.Mvc3释放对象。

在注册时使用HierarchicalLifetimeManager告知dependency resolver。

演示结果如下:

Figure 7: Output Window Showing Message When MessageGenerator Is Disposed

结论

Unity.Mvc 安装时,如果之前没有安装Unity,将自动安装。.Bootstrapper文件自动加入到项目中,以减少开发者使用Unity.Mvc3的步骤。

译注:安装也可通过Package Manager Console使用Install-Package Unity.Mvc3命令安装。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读