您的位置:首页 > 移动开发 > Unity3D

ASP.NET MVC3使用Unity2.0实现依赖注入

2011-07-25 22:19 621 查看
创建空的ASP.NETMVC3项目,添加对Unity2.0动态库的引用。方法1:在MSDN上下载Untity2.0,安装后,默认安装在C:\ProgramFiles\MicrosoftUnityApplicationBlock2.0下。Microsoft.Practices.ServiceLocation.dllMicrosoft.Practices.Unity.Configuration.dllMicrosoft.Practices.Unity.dllMicrosoft.Practices.Unity.Interception.Configuration.dllMicrosoft.Practices.Unity.Interception.dll

方法2:使用PackageManagerConsole

工具—LibraryPackageManage—PackageManagerConsole,执行下面的命令:要在上面新创建的ASP.NETMVC3项目中使用Unity依赖注入容器,需要在项目中添加一个类,它实现IDependencyResolver的接口,调用具体的Unity依赖注入容器。代码如下:publicclassUnityDependencyResolver:IDependencyResolver{readonlyIUnityContainer_container;publicUnityDependencyResolver(IUnityContainercontainer){this._container=container;}publicobjectGetService(TypeserviceType){try{return_container.Resolve(serviceType);}catch{returnnull;}}publicIEnumerable<object>GetServices(TypeserviceType){try{return_container.ResolveAll(serviceType);}catch{returnnewList<object>();}}}
在Global.asax.cs中,创建Unity依赖注入容器,在Application_Start方法中,使用前面创建的UnityDependencyResolver类注册Unity容器作为ASP.NETMVC的ServiceLocator。
代码如下:
protectedvoidApplication_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);

varcontainer=newUnityContainer();
container.RegisterType<IMessages,Messages>();
DependencyResolver.SetResolver(newUnityDependencyResolver(container));
}
同时容器使用RegisterType注册了类型,在本例中注册了类型IMessage以及具体实现Messages
增加HomeController.cs,代码如下:
代码如下:
publicclassHomeController:Controller{privatereadonlyIMessagesmessages;publicHomeController(IMessagesmessages){this.messages=messages;}publicActionResultIndex(){ViewBag.Message=messages.Welcome();returnView();}}
增加接口IMessges和具体实现类Messages,代码如下:
代码如下:
publicinterfaceIMessages{stringWelcome();}publicclassMessages:IMessages{publicstringWelcome(){return"欢迎在ASP.NETMVC3中使用Unity2.0";}}
运行应用程序,Unity依赖注入容器会解析在HomeControler定义的依赖,Index页面显示"欢迎在ASP.NETMVC3中使用Unity2.0"代码下载
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: