zoukankan      html  css  js  c++  java
  • 在DoNetMVC中使用控制反转和依赖注入【DI】

    本次是在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         }
  • 相关阅读:
    移动端按钮居底
    easyui用KindEditor编辑器
    查找数组中与后面项匹配的和猴子选大王
    before和after的样式符号
    jq的select
    验证最多2位小数,1到10 不超过10 带两位小数的正则表达式
    在谷歌浏览器下vue的@input事件问题
    mvc项目+vue+vant【进行中】
    微商代理查询系统 开发完成,免费体验试用哦!
    淘宝出了个麻吉宝区块连产品,附带麻吉宝邀请码!
  • 原文地址:https://www.cnblogs.com/KenFine/p/10499458.html
Copyright © 2011-2022 走看看