中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET MVC 3如何讓依賴注入實現得更簡單

發布時間:2021-11-24 13:12:43 來源:億速云 閱讀:126 作者:柒染 欄目:編程語言

本篇文章為大家展示了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 成員           /// <summary>          /// 依賴注入容器          /// </summary>          private UnityContainer _unityContainer;           /// <summary>          /// 構造          /// </summary>          /// <param name="aUnityContainer">依賴注入容器</param>          public MyDependencyResolver( UnityContainer aUnityContainer )          {              _unityContainer = aUnityContainer;          }           public object GetService( Type aServiceType )          {              try             {                  return _unityContainer.Resolve( aServiceType );              }              catch             {   /// 按微軟的要求,此方法,在沒有解析到任何對象的情況下,必須返回 null,必須這么做!!!!                  return null;              }          }           public IEnumerable<object> GetServices( Type aServiceType )          {              try             {                  return _unityContainer.ResolveAll( aServiceType );              }              catch             {    /// 按微軟的要求,此方法,在沒有解析到任何對象的情況下,必須返回空集合,必須這么做!!!!                  return new List<object>( );              }          }           #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<ITest, Test>( );   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如何讓依賴注入實現得更簡單,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永宁县| 元朗区| 丹江口市| 台北县| 台中市| 历史| 涞水县| 汽车| 桂东县| 于都县| 兴国县| 东乌| 大渡口区| 青田县| 江达县| 延吉市| 汤原县| 雷山县| 邢台县| 庆元县| 祁阳县| 桂平市| 霍林郭勒市| 德州市| 淮阳县| 民乐县| 沾益县| 施秉县| 吉木乃县| 沧州市| 达日县| 黄平县| 柞水县| 聂拉木县| 攀枝花市| 万盛区| 罗田县| 栖霞市| 基隆市| 东安县| 哈巴河县|