zoukankan      html  css  js  c++  java
  • 如何在asp.net mvc 中使用Autofac 控制反转(Ioc)

    前言

    最近看了一些关于Ioc方面的开源项目,里面的类跳来转去,看的迷迷糊糊的。项目里根本不需要这么“复杂的”设计,只需简单完成Ico,达到解耦的目的,并且能高效的完成项目。于是参考autofac的官网及网络资源,写了这篇文章。

    入门的坑

    在网上很多关于mvc使用autofac的文章,在global.cs中大多都会有这么一句代码:

    builder.RegisterControllers
    

    一开始,自己仅是通过nuget引用了autofac,所以怎么也敲不出这个。因此,新入门的小伙半一定要同时引入这两个:

    1、Autofac

    2、Autofac.mvc5

    PS: 这里要注意的是:有很多个版本autofac.mvc,如果安装的版本不对,有可能出现这样的错误:

    Autofac.Integration.Mvc.AutofacDependencyResolver.GetService(System.Type)”时违反了继承安全性规则

    这是因为net版本和autofac.mvc版本不兼容导致的。在此demo源码中使用的net4.5.2。

    关键代码

     1 public class MvcApplication : System.Web.HttpApplication
     2     {
     3         protected void Application_Start()
     4         {
     5             AreaRegistration.RegisterAllAreas();
     6             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
     7             RouteConfig.RegisterRoutes(RouteTable.Routes);
     8             BundleConfig.RegisterBundles(BundleTable.Bundles);
     9 
    10             //配置autofac
    11             var builder = new ContainerBuilder();
    12             SetupResolveRules(builder);
    13             builder.RegisterControllers(typeof(MvcApplication).Assembly);
    14             var container = builder.Build();
    15             DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    16         }
    17         private void SetupResolveRules(ContainerBuilder builder)
    18         {
    19             builder.RegisterType<StudentRepository>().As<IStudentRepository>();
    20         }
    21     }
    View Code

    homecontroller 中使用

    1 readonly IStudentRepository _studentRepository;
    2         public HomeController(IStudentRepository studentRespository) {
    3             _studentRepository = studentRespository;
    4         }
    5         public string Index()
    6         {
    7             return _studentRepository.SayHello();
    8         }

    源码下载

    密码:fj24

    希望这篇文章能帮助到大家。谢谢

      

  • 相关阅读:
    凯撒密码、GDP格式化输出、99乘法表
    字符串基本操作
    第四次作业
    第三次作业
    012黄意芳
    test指令的测试功能
    date命令
    zendstudio 10 项目导入乱码的解决
    用modelsim和debussy协同仿真VHDL Verilog的流程
    使用Debussy+ModelSim快速查看前仿真波形
  • 原文地址:https://www.cnblogs.com/liangxiarong/p/8612198.html
Copyright © 2011-2022 走看看