当前位置: 首页 > news >正文

AutoFac 简单好用的IOC


0. 安装autofac的nuget




1. 准备测试接口和类


class BallGame : IPlay
    {
        public void Do()
        {
            Console.WriteLine("ball game");
            Console.Read();
        }
    }


    class ComputerGame : IPlay
    {
        public void Do()
        {
            Console.WriteLine("computer game.");
            Console.Read();
        }
    }


    interface IPlay
    {
        void Do();
    }



2. 编写autofac模块
class PlayModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType(typeof(ComputerGame)).As(typeof(IPlay)).InstancePerLifetimeScope();
        }
    }




这样的设计是主张模块化编程,把职责隔离到不同的dll,这样之后更新起来只需要替代指定dll即可。


3. 注册autofac模块,运行测试


var builder = new ContainerBuilder();
builder.RegisterModule(new PlayModule());
var container = builder.Build();
//container.Resolve<IPlay>().Do();
using (var scope = container.BeginLifetimeScope())
{
      var play = scope.Resolve<IPlay>();
      play.Do();
}



先创建一个builder,然后注册模块,最后builder调用Build函数返回container对象。
接下来可以选择性的控制对象的生命周期。


4.完成测试。

相关文章:

  • 使用Xamarin Forms+XLabs 完成 Camara access
  • 服务器部署MVC API 遇到IIS 403.14 错误
  • 利用udev、sys动态创建linux设备结点
  • 创建第一个azure hadoop insight
  • ARM linux系统调用的实现原理
  • 嵌入式linux应用开发之:初识Qt
  • 内核栈的使用
  • IIS 7 ‘Handler XXX has a bad module XXX in its module list’
  • C# 使用 doggleReport 生成pdf报表
  • 在nand flash上实现JFFS2根文件文件系统
  • window API判断系统是否为闲置状态
  • 机器学习 -- 基本数学概念总结
  • 基于S3C2410的SD卡linux驱动工作原理(一)
  • R 学习 -- vector
  • 基于S3C2410的SD卡linux驱动工作原理(二)
  • 网络传输文件的问题
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 2017 前端面试准备 - 收藏集 - 掘金
  • CSS3 变换
  • Docker 笔记(2):Dockerfile
  • Git的一些常用操作
  • Git学习与使用心得(1)—— 初始化
  • Laravel5.4 Queues队列学习
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • ubuntu 下nginx安装 并支持https协议
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • Windows Containers 大冒险: 容器网络
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 搞机器学习要哪些技能
  • 聊聊flink的BlobWriter
  • 那些年我们用过的显示性能指标
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 无服务器化是企业 IT 架构的未来吗?
  • 学习使用ExpressJS 4.0中的新Router
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​低代码平台的核心价值与优势
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #Linux(权限管理)
  • (11)MATLAB PCA+SVM 人脸识别
  • (145)光线追踪距离场柔和阴影
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二十四)Flask之flask-session组件
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (六)激光线扫描-三维重建
  • (论文阅读30/100)Convolutional Pose Machines
  • (十八)三元表达式和列表解析
  • (算法)N皇后问题