本次是在 MVC5 中使用 Autofac
第一步: 程序包管理器控制台 Install-Package Autofac.MVC5 引入 nuget 包
这样成功之后, 会在引用中出现两个 DLL, 分别是 Autofac.dall Autofac.Integration.Mvc.dll
第二步: 配置 Autofac, 并初始化
代码如下:
- public class AutofacConfig
- {
- /// <summary>
- /// 初始化
- /// </summary>
- public static void Initialise()
- {
- // 实例化一个 autofac 的创建容器
- var builder = new ContainerBuilder();
- // 告诉 Autofac 框架, 将来要创建的控制器类存放在哪个程序集
- Assembly controllerAss = Assembly.Load("****");
- builder.RegisterControllers(controllerAss);
- // 告诉 autofac 框架注册数据仓储层所在程序集中的所有类的对象实例
- Assembly respAss = Assembly.Load("DataP");
- // 创建 respAss 中的所有类的 instance 以此类的实现接口存储
- builder.RegisterTypes(respAss.GetTypes()).AsImplementedInterfaces();
- // 告诉 autofac 框架注册业务逻辑层所在程序集中的所有类的对象实例
- Assembly serpAss = Assembly.Load("DataM");
- // 创建 serAss 中的所有类的 instance 以此类的实现接口存储
- builder.RegisterTypes(serpAss.GetTypes()).AsImplementedInterfaces();
- // builder.RegisterType<>().As<>();
- // 创建一个 Autofac 的容器
- var container = builder.Build();
- // 将 MVC 的控制器对象实例 交由 autofac 来创建
- DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
- }
- }
第三步: 实现注入启动
- AutofacConfig.Initialise();
- public class MvcApplication : System.web.HttpApplication
- {
- protected void Application_Start()
- {
- AreaRegistration.RegisterAllAreas();
- RouteConfig.RegisterRoutes(RouteTable.Routes);
- //
- AutofacConfig.Initialise();
- }
- }
第四步: 在控制器中使用
- public class businessController : Controller
- {
- // GET: business
- private IBusinessService _businessService;
- public businessController(IBusinessService service)
- {
- this._businessService = service;
- }
来源: http://www.bubuko.com/infodetail-2981050.html