本次是在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 }