重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了ASP.NET MVC 3如何让依赖注入实现得更简单,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联建站主要从事成都做网站、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务息烽,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
我没有找到一个完整的示例,只有一些代码片断,于是,我将其整理了一翻,也有一点点个人的心得,拿出来,与大家分享一下,
如遇高人请不吝赐教,下面是代码片断。
1、实现 MVC3 Beta 中提供的依赖注入接口 IDependencyResolver ,MyDependencyResolver.cs 的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Microsoft.Practices.Unity; namespace Demo { public class MyDependencyResolver : IDependencyResolver { #region IDependencyResolver 成员 ////// 依赖注入容器 /// private UnityContainer _unityContainer; ////// 构造 /// /// 依赖注入容器 public MyDependencyResolver( UnityContainer aUnityContainer ) { _unityContainer = aUnityContainer; } public object GetService( Type aServiceType ) { try { return _unityContainer.Resolve( aServiceType ); } catch { /// 按微软的要求,此方法,在没有解析到任何对象的情况下,必须返回 null,必须这么做!!!! return null; } } public IEnumerable
2、在 Global.asax.cs 中设置依赖注入解析器 DependencyResolver (这是一个全局静态类,也是 MVC3 Beta 新增的):
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; using Microsoft.Practices.Unity; namespace Demo { // Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : System.Web.HttpApplication { public static void RegisterGlobalFilters( GlobalFilterCollection filters ) { filters.Add( new HandleErrorAttribute( ) ); } public static void RegisterRoutes( RouteCollection routes ) { routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" ); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } protected void Application_Start( ) { AreaRegistration.RegisterAllAreas( ); RegisterGlobalFilters( GlobalFilters.Filters ); RegisterRoutes( RouteTable.Routes ); //设置依赖注入 RegisterDependency( ); } private static UnityContainer _Container; public static UnityContainer Container { get { if ( _Container == null ) { _Container = new UnityContainer( ); } return _Container; } } protected void RegisterDependency( ) { Container.RegisterType( ); DependencyResolver.SetResolver( new MyDependencyResolver( Container ) ); } } }
3、Controller的代码,HomeController.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Microsoft.Practices.Unity; namespace Demo.Controllers { public class HomeController : Controller { [Dependency] public ITest Test { get; set; } public ActionResult Index( ) { ViewModel.Message = Test.GetString( ); return View( ); } public ActionResult About( ) { return View( ); } } }
4、ITest.cs代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Demo { public interface ITest { string GetString( ); } }
5、Test.cs代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Demo { public class Test:ITest { #region ITest 成员 public string GetString( ) { return "Run demo!"; } #endregion } }
***** 注意,这篇文章只适用于 ASP.NET MVC3 Beta 版,将来正式版出来了,未必采用这种方式来实现,毕竟对于依赖注入这块,
从 MVC1 -> MVC3 Preview1 -> MVC3 Beta 一直都在变化。
上述内容就是ASP.NET MVC 3如何让依赖注入实现得更简单,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。