C#使用AutoFac实现IOC依赖注入

2023-10-30

1,配置web.cofig配置文件修改执行javascript
<appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
2,编写Autofc.cs并且此文件放在App_Start文件目录下,在应用初始化是进行加载。
<pre code_snippet_id="272713" snippet_file_name="blog_20140403_1_3301351" name="code" class="csharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.Mvc;
using Autofac;
using AutofcDemo.Controllers;
using AutofcDemo.Models;

namespace AutofcDemo.App_Start
{
    public static class Autofc
    {
        public static IContainer container; 
        public static void InitAutofc() 
        {
            ContainerBuilder builder = new ContainerBuilder();
          //----------------------------------------------------------------------------------------
            //                      构造方法进行自动注入使用方式(官方推荐)
            //----------------------------------------------------------------------------------------
            //方式一
             //builder.RegisterType<ShowDao>();
            // builder.RegisterType<HomeController>();
            //方式二
            //builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).Where(t=>t.Name.EndsWith("Dao")).SingleInstance();
            //builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).Where(t => t.Name.EndsWith("Controller")).InstancePerLifetimeScope();
            //方式三
           // builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly());

            //----------------------------------------------------------------------------------------
            //                      属性自动注入使用方式
            //----------------------------------------------------------------------------------------
            //方式一
             //builder.Register(c => new HomeController { showDao = c.Resolve<ShowDao>() });
            //方式二
             //builder.RegisterType<ShowDao>();
            // builder.RegisterType<HomeController>().PropertiesAutowired();
            //方式三
            builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).Where(t => t.Name.EndsWith("Dao")).SingleInstance();
            builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).Where(t => t.Name.EndsWith("Controller")).InstancePerLifetimeScope().PropertiesAutowired();
            //----------------------------------------------------------------------------------------
            container = builder.Build();
            DependencyResolver.SetResolver(new Autofac.Integration.Mvc.AutofacDependencyResolver(container));
          
        }
    }
}
3,在global.cs中进行配置
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
using AutofcDemo.App_Start;
using Autofac;
using AutofcDemo.Models;
using AutofcDemo.Controllers;

namespace AutofcDemo
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            Autofc.InitAutofc();
        }
    }
}
4,在控制器中注入
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AutofcDemo.Models;

namespace AutofcDemo.Controllers
{
    public class HomeController : Controller
    {
        //通过属性注入
        public ShowDao showDao { set; get; }

        //通过构造方法注入
        //public HomeController(ShowDao _showDao)
        //{
        //    this.showDao = _showDao;
        //}
        public ActionResult Index()
        {
            string aaa = showDao.PrintInfo();
            ViewBag.aaa = aaa;
            return View();
        }

    }
}





 

                
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#使用AutoFac实现IOC依赖注入 的相关文章

随机推荐

  • zabbix邮件报警配置

    前言 Zabbix监控服务端 客户端都已经部署完成 被监控主机已经添加 Zabiix监控运行正常 在Zabbix服务端设置邮件报警 当被监控主机宕机或者达到触发器预设值时 会自动发送报警邮件到指定邮箱 邮件服务可以使用系统自带的邮件服务来发
  • linuxrpm命令卸载python_Linux RPM包安装、卸载、升级命令讲解

    一个 RPM 包包含了已压缩的软件文件集以及该软件的内容信息 通常表现为以 rpm 扩展名结尾的文件 例如 samba rpm 如果需要对RPM包进行操作则需要使用rpm命令 一 RPM包的来源 所有RPM包都在系统光盘的Packages目
  • coco数据集80个分类是哪些_目标分类定位,实时速度检测...目标检测5大挑战与解决方案...

    图像分类是指计算机根据图像内容对图像进行分类或分配标签 通常只需利用预先训练好的神经网络 对最后几个吞吐量层进行微调 然后就可以看到很好的结果 然而 仅在几年前 对图像中的单个目标进行分类和查找未知数量是极其困难的 现在 这项被称为目标检测
  • HTML 标签

    定义和用法 声明必须是 HTML 文档的第一行 位于 标签之前 声明不是 HTML 标签 它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令 在 HTML 4 01 中 声明引用 DTD 因为 HTML 4 01 基于
  • uinapp和php实现RSA + AES 双向通信加密

    使用场景 如果只是为了防止用户数据泄露 有条件用https 那不要犹豫 赶快买个证书 但是https也有局限性 加密层位于http层 应用层 和tcp层 传输层 之间 所以抓到的http层的数据并没有加密 单独加密的弊端 单独用RSA非对称
  • QT5.12.3+OPENCV4.2.0配置,MINGW编译与库文件调用

    目录 1 QT5 12 3 OPENCV4 2 0 2 准备工作 3 安装步骤 3 1 QT 3 2 CMAKE 3 3 OPENCV 4 使用MINGW编译OPENCV 5 QT调用库文件 6 QT测试OPENCV 1 QT5 12 3
  • PyTorch简介及环境搭建

    本文主要包含PyTorch的基本介绍 以及安装方法 文章目录 前言 PyTorch简介 PyTorch作用 对比PyTorch和Tensorflow PyTorch大版本的主要更新 PyTorch总结 PyTorch环境搭建 安装PyTor
  • python基础总结:1.9、错误和异常

    python基础总结 1 9 错误和异常 文章目录 python基础总结 1 9 错误和异常 1 语法错误 2 异常 3 处理异常 4 抛出异常 5 用户自定义异常 6 定义清理操作 7 预定义的清理操作 到目前为止 我们还没有提到错误消息
  • zabbix3.4.2使用discovery对磁盘IO进行监控

    https blog csdn net m0 37814112 article details 80997967
  • c++ 代码

    js 调用c 代码给的接口 c 代码储存在exe和dll文件中 转载于 https www cnblogs com guomengkai p 11502475 html
  • 74HC595芯片——单芯片控制代码示例

    1 关于74HC595 芯片示意图 TSSOP封装 引脚说明 符号 引脚 描述 Q0 Q7 第15脚 第1 7脚 8位并行数据输出 GND 第8脚 地 Q7 第9脚 串行数据输出 MR 第10脚 主复位 低电平有效
  • Sklearn工具包及模型评估

    一 Sklearn工具包介绍 scikit learn 又写作sklearn 是一个开源的基于python语言的机器学习工具包 它通过NumPy SciPy和Matplotlib等python数值计算的库实现高效的算法应用 并且涵盖了几乎所
  • vcs覆盖率选项

    vcs中常用的收集覆盖率选项如下 1 cm dir
  • 【RuoYi-Vue-Plus】学习笔记 05 - 日志框架 TLog

    文章目录 参考资料 一 概述 二 相关配置 1 Maven 2 Logback框架适配器 3 自动打印调用参数和时间 4 TLogConfig 参考资料 1 TLog官方文档 2 TLog官方文档 按需依赖 3 TLog官方文档 Logba
  • kaggle免费GPU,google人机认证

    45条消息 GOOGLE 人机验证 RECAPTCHA 无法显示解决方案 转 散着步的码农的博客 CSDN博客x 许多小伙伴想找免费GPU kaggle确实是个非常不错的选择 本人亲测 配合抖音明日科技还是什么博主和这个博客 可以轻松解决
  • 【IT之路】Docker拉取镜像查看版本

    Docker拉取镜像查看版本 需要在docker hub查看 地址如下 https hub docker com 进入之后 在页面左上角搜索框搜索 以CentOS为例
  • 【测试详解】关于java定时器的常见问题,例如无法取消,被延期执行等

    定时器Timer Timer timer new Timer true 将定时器设置为守护线程 daemon 即当用户线程都已经执行完毕退出以后 jvm就会结束守护进程 不管守护进程是否还有任务 程序退出 定时器任务TimerTask 可以
  • C语言的原子操作

    gcc支持如下原子操作 if GCC VERSION gt 40100 内存访问栅 define barrier sync synchronize 原子获取 define AO GET ptr typeof ptr volatile val
  • 一篇文章告诉你:如何参加成都IT培训拿高薪?

    转行IT开发 这是很多人在工作迷茫时的想法 很多小伙伴被程序员的高薪所以吸引 盲目的学习计算机编程 结果大多都半途而废 甚至开始怀疑自己的智商 造成这种原因主要是盲目跟风 没有制定可行的计算机编程学习计划和学习目标 零基础如何学习IT编程
  • C#使用AutoFac实现IOC依赖注入

    1 配置web cofig配置文件修改执行javascript