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         }
  • 相关阅读:
    Python向上取整,向下取整以及四舍五入函数
    Python字符串操作之字符串分割与组合
    python第四十七课——类属性和函数属性
    python第四十六课——函数重写
    LR进行接口测试
    Linux安装rpc监控系统资源
    本文将详细介绍oracle 10g OEM常规错误
    windows下卸载oracle11g
    Vi编辑器修改文件.bash_profile可解决backspace出现乱码问题,rlwrap 的安装。
    vim 编辑器常用命令
  • 原文地址:https://www.cnblogs.com/KenFine/p/10499458.html
Copyright © 2011-2022 走看看