Asp.Net Mvc3.0(MEF依赖注入实例)
前言
在http://www.cnblogs.com/aehyok/p/3386650.html前面一節主要是對MEF進行簡單的介紹。本節主要來介紹如何在Asp.Net Mvc3.0中使用MEF。
準備工作
?首先建立一個Asp.Net Mvc3.0的Web項目。然后建立一個業務邏輯處理的類庫項目。
在MEF.Repository類庫項目中建立一個ITestRepository的接口
namespace MEF.Repository {public interface ITestRepository{string GetTestString();} }以及它的一個實現類
[Export(typeof(ITestRepository))]public class TestRepository:ITestRepository{public string GetTestString(){return "Hello World";}}可以看到我們已經為其標記了Export的導出屬性,它的類型為上面聲明的接口ITestRepository。
記得還需要引用命名空間
using System.ComponentModel.Composition;實現MEF的注入工作
?步驟大概分為四步
第一步:發現部件---這種方式是通過讀取當前程序下的dll文件中的部件
第二步:為第一步中獲取到的部件創建一個CompositionContainer實例
第三步:實現IDependencyResolver接口
第四步:注冊到DependencyResolver
//設置MEF依賴注入容器DirectoryCatalog catalog = new DirectoryCatalog(AppDomain.CurrentDomain.SetupInformation.PrivateBinPath);MefDependencySolver solver = new MefDependencySolver(catalog);DependencyResolver.SetResolver(solver);這是在Global.asax文件下的Application_Start方法執行的文件,里面有一個自定義的MefDependencySolver
public class MefDependencySolver : IDependencyResolver{private readonly ComposablePartCatalog _catalog;private const string MefContainerKey = "MefContainerKey";public MefDependencySolver(ComposablePartCatalog catalog){_catalog = catalog;}public CompositionContainer Container{get{if (!HttpContext.Current.Items.Contains(MefContainerKey)){HttpContext.Current.Items.Add(MefContainerKey, new CompositionContainer(_catalog));}CompositionContainer container = (CompositionContainer)HttpContext.Current.Items[MefContainerKey];HttpContext.Current.Application["Container"] = container;return container;}}public object GetService(Type serviceType){string contractName = AttributedModelServices.GetContractName(serviceType);return Container.GetExportedValueOrDefault<object>(contractName);}public IEnumerable<object> GetServices(Type serviceType){return Container.GetExportedValues<object>(serviceType.FullName);}} }里面定義創建了CompositionContainer對象實例,并繼承接口IDependencyResolver實現方法
并最終完成注冊到DependencyResolver。
接下來就是需要實現調用了
[Export]public class HomeController : Controller{[Import]public ITestRepository Repository { get; set; }public ActionResult Index(){Repository.GetTestString();ViewBag.Message = "Welcome to ASP.NET MVC!" + Repository.GetTestString();return View();}就是為需要的部件進行屬性的標注
通過依賴注入的實現的確找到了該調用的實例。并查看最終的運行效果。
總結
?自己感覺很不錯,希望能應用到實際的開發項目中。
簡單的實例代碼下載地址?http://pan.baidu.com/share/link?shareid=224012114&uk=4244870074
?
?
?
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Asp.Net Mvc3.0(MEF依赖注入实例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 财经数据提取器上线拉
- 下一篇: hadoop--HDFS_DataNod