在DoNetMVC中使用控制反轉和依賴註入【DI】
阿新 • • 發佈:2019-03-09
ofa 程序包管理器 業務 reg gis ice 實現接口 ble 控制
本次是在MVC5中使用Autofac
第一步:程序包管理器控制臺 Install-Package Autofac.MVC5 引入nuget包
這樣成功之後,會在引用中出現兩個DLL,分別是Autofac.dall Autofac.Integration.Mvc.dll
第二步:配置Autofac,並初始化
代碼如下:
1 public class AutofacConfig 2 { 3 /// <summary> 4 /// 初始化 5 /// </summary> 6 publicstatic void Initialise() 7 { 8 //實例化一個autofac的創建容器 9 var builder = new ContainerBuilder(); 10 //告訴Autofac框架,將來要創建的控制器類存放在哪個程序集 11 Assembly controllerAss = Assembly.Load("****"); 12 builder.RegisterControllers(controllerAss); 1314 //告訴autofac框架註冊數據倉儲層所在程序集中的所有類的對象實例 15 Assembly respAss = Assembly.Load("DataP"); 16 //創建respAss中的所有類的instance以此類的實現接口存儲 17 builder.RegisterTypes(respAss.GetTypes()).AsImplementedInterfaces(); 18 19 //告訴autofac框架註冊業務邏輯層所在程序集中的所有類的對象實例20 Assembly serpAss = Assembly.Load("DataM"); 21 //創建serAss中的所有類的instance以此類的實現接口存儲 22 builder.RegisterTypes(serpAss.GetTypes()).AsImplementedInterfaces(); 23 24 // builder.RegisterType<>().As<>(); 25 26 //創建一個Autofac的容器 27 var container = builder.Build(); 28 //將MVC的控制器對象實例 交由autofac來創建 29 DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 30 31 } 32 }
第三步:實現註入啟動
AutofacConfig.Initialise();
1 public class MvcApplication : System.Web.HttpApplication 2 { 3 protected void Application_Start() 4 { 5 AreaRegistration.RegisterAllAreas(); 6 RouteConfig.RegisterRoutes(RouteTable.Routes); 7 // 10 AutofacConfig.Initialise(); 11 } 12 13 }
第四步:在控制器中使用
1 public class businessController : Controller 2 { 3 // GET: business 4 private IBusinessService _businessService; 5 public businessController(IBusinessService service) 6 { 7 this._businessService = service; 8 }
在DoNetMVC中使用控制反轉和依賴註入【DI】