千家信息网

ASP.NET MVC 3如何让依赖注入实现得更简单

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章为大家展示了ASP.NET MVC 3如何让依赖注入实现得更简单,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我没有找到一个完整的示例,只有一些代码片
千家信息网最后更新 2026年11月02日ASP.NET MVC 3如何让依赖注入实现得更简单

本篇文章为大家展示了ASP.NET MVC 3如何让依赖注入实现得更简单,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

我没有找到一个完整的示例,只有一些代码片断,于是,我将其整理了一翻,也有一点点个人的心得,拿出来,与大家分享一下,

如遇高人请不吝赐教,下面是代码片断。

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 GetServices( Type aServiceType )          {              try             {                  return _unityContainer.ResolveAll( aServiceType );              }              catch             {    /// 按微软的要求,此方法,在没有解析到任何对象的情况下,必须返回空集合,必须这么做!!!!                  return new List( );              }          }           #endregion      }   }

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如何让依赖注入实现得更简单,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

代码 内容 容器 对象 情况 成员 技能 此方法 片断 知识 篇文章 微软 简明 不吝赐教 简明扼要 个人 全局 只有 就是 心得 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网加科技 互联网科技工作委员会副主任毛军 互联网科技财经 互联网是不是新科技 互联网与科技发展 安徽鑫晟辉互联网科技 顺玮阁互联网科技 居家互联网科技有限公司 富国互联网科技创新基金 互联网科技寓意 互联网为啥属于高科技 宝灵互联网科技有限公司 花神(南京)互联网科技有限公司 亳州好赞互联网科技有限公司 广州新华互联网科技学校电竞方面 朱啸虎曾投资哪些互联网科技企业 世界互联网领先科技成果获奖 上海京穆互联网科技有限公司 广州智享互联网科技 互联网科技创业计划的风险分析 亿人帮互联网科技有限公司 中关村互联网科技集团 喔噻互联网科技 天扬科技互联网广告 阿大互联网科技有限公司 洛阳共同富裕互联网科技有限公司 高科技互联网套路 厦门江牛科技互联网 互联网相关科技技术 现代科技的标志之一的互联网
0