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         }
  • 相关阅读:
    自定义组件要加@click方法
    绑定样式
    647. Palindromic Substrings
    215. Kth Largest Element in an Array
    448. Find All Numbers Disappeared in an Array
    287. Find the Duplicate Number
    283. Move Zeroes
    234. Palindrome Linked List
    202. Happy Number
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/KenFine/p/10499458.html
Copyright © 2011-2022 走看看