1. 程式人生 > >在DoNetMVC中使用控制反轉和依賴註入【DI】

在DoNetMVC中使用控制反轉和依賴註入【DI】

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         public
static void Initialise() 7 { 8 //實例化一個autofac的創建容器 9 var builder = new ContainerBuilder(); 10 //告訴Autofac框架,將來要創建的控制器類存放在哪個程序集 11 Assembly controllerAss = Assembly.Load("****"); 12 builder.RegisterControllers(controllerAss); 13
14 //告訴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】