出处:http://www.cnblogs.com/kissdodog/p/3611447.html

Autofac是一个轻量级的依赖注入的框架,同类型的框架还有Spring.NET,Unity,Castle等。

  Autofac的使用有一个非常让人郁闷的地方,就是服务器要求安装有Microsoft .NET Framework 4 KB2468871。该补丁的地址是:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=3556 如果不安装,则运行程序会报如下错误:

  

  具体信息可以到这里去查看:https://code.google.com/p/autofac/wiki/FrequentlyAskedQuestions

  这篇文章以一个最简单的例子,开始Autofac的学习:

namespace ConsoleApplication3
{    class Program{        static void Main(string[] args){            ContainerBuilder builder = new ContainerBuilder();builder.RegisterType<AutoFacManager>();builder.RegisterType<Worker>().As<IPerson>();            using (IContainer container = builder.Build()){                AutoFacManager manager = container.Resolve<AutoFacManager>();manager.Say();} Console.ReadKey();}}    public interface IPerson{        void Say();}    public class Worker : IPerson{        public void Say(){Console.WriteLine("我是一个工人!");}}    public class Student : IPerson{        public void Say(){Console.WriteLine("我是一个学生!");}}    public class AutoFacManager{        IPerson person;        public AutoFacManager(IPerson MyPerson){person = MyPerson;}        public void Say(){person.Say();}}
}

  以上例子,是一个最简单的例子,输出如下:

  

  简单解释:

  1、ContainerBuilder类型的作用

    组件通过ContainerBuilder的对象注册。

  2、组件

    对象需要从组件中来获取,比如例子中的Worker类的实例就需要从组件中获取。

  3、哪些实例可以作为组件

  • Lambda表达式

  • 一个类型

  • 一个预编译的实例

  • 实例类型所在的程序集

  4、容器

    ContainerBuilder的Build()方法可以创建容易,从容器的Resolve()方法能够获得对象。

  5、为了指定组件服务是某一接口

    As()方法将用于注册时之指定:builder.RegisterTye<TaskController>().As<TController>(); 
  6、组件的依赖关系

    组件的依赖关系主要通过接口实现,如Worker:IPerson

分类: 框架:Autofac

绿色通道: 好文要顶 关注我 收藏该文与我联系 

逆心
关注 - 23
粉丝 - 164

+加关注

0

0

(请您对文章做出评价)

上一篇:ServiceStack.Redis常用操作 - 事务、并发锁
 下一篇:Autofac 组件、服务、自动装配 《第二篇》

转载于:https://blog.51cto.com/quanju/1548878

Autofac 解释第一个例子 《第一篇》相关推荐

  1. ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!

    文章目录 1.前言 2. SDK概述 2.1 SDK使用流程 2.2 ESP8266 HDK -- 硬件开发工具 2.3 ESP8266 SDK -- 软件开发工具包 2.3.1 Non-OS SDK ...

  2. TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅

    TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅读 ...

  3. TensorFlow入门教程:1:安装和第一个例子程序

    TensorFlow™ 是Google开源的一个采用数据流图用于数值计算的开源库.截止到目前为止在github上已经获得超过6万个Star,已经成为深度学习和机器学习方面最为受欢迎的项目,炙手可热.这 ...

  4. 【2022计算机综合试卷408考研第一轮_计算机网络篇】第二章 物理层

    [2022计算机综合试卷408考研第一轮_计算机网络篇]第二章 物理层 一.物理层的基本概念: 1.物理层的概念和功能 1.定义:物理层解决如何在连接各种计算机的传输媒体上传输数据比特流 ,而不是指具 ...

  5. zstack 第一个例子

    看了好长一段时间的原理,终于手痒了,开动了第一个例子,感谢大家来敢看我的博客!! 1.        协议栈构架 首先打开程序代码,找到IAR工程 ,打开后可以看到TI ZStack的大体框架,如下图 ...

  6. Ubantu下hadoop运行第一个例子wordcount过程

    Ubantu12.04下hadoop-1.2.1运行第一个例子wordcount过程,分享一下 将WordCount.java文件放在Hadoop安装目录下,并在安装目录下创建输入目录input,目录 ...

  7. 《Unix网络编程卷1-套接字联网API》第一个例子编译 不通过问题解决

    <Unix网络编程卷1-套接字联网API>是本好书. 但是第一个例子不是很好编译. 需要如下步骤: 本人机器CentOS 5.4 1.下载源码 unpv13e解压到任意目录 然后按其rea ...

  8. python中tornado的第一个例子

    python中tornado的第一个例子 1  先安装tornado pip install tornado 2 新建tor.py 记住不能建立 tornado.py 这样的名字  不然会报错 Imp ...

  9. GLSL着色语言学习。橙皮书第一个例子GLSL+OpenTK+F#的实现。

    Opengl红皮书有选择的看了一些,最后的讲着色语言GLSL的部分看的甚为不理解,然后找到Opengl橙皮书,然后就容易理解多了. 在前面,我们或多或少接触到Opengl的处理过程,只说前面一些处理, ...

最新文章

  1. 《C++面向对象高效编程(第2版)》——2.29 泛化关系(is-a)
  2. mysql实现row_number()和row_number() over(partition by)
  3. 用纯C面向过程写icefox3的代码
  4. Python手动实现kmeans聚类和调用sklearn实现
  5. kass中lisp文件,常见的Lisp-获取文件的路径
  6. SBuild 0.1.4 发布,基于 Scala 的构建系统
  7. Avalonia-.NET 的跨平台 UI 框架
  8. 调用API发送短信python
  9. 撰写paper时,如何在word里输入图片或其他文献(PDF)里的公式?(更新时间2022.03.01)
  10. ​京东云:原来落地 AI 应用是这么回事儿!
  11. tortoisesvn统计_TortoiseSVN使用教程——史上最全最易懂教程
  12. 使用YYLabel小结,供参考
  13. Excel合并多个文件
  14. 通过身份证号码获取年龄和出生日期
  15. 兼顾时尚与商务? ThinkPad Z 重新定义“商务本”
  16. qq批量登录软件_QQ一键签到助手v1.0
  17. 家庭智能 HomeAssistant 四大组件的安装
  18. NFT,不止于投机!
  19. html5中的meter标签改变颜色规则
  20. 二叉树非递归遍历(模版)

热门文章

  1. EBU6042 Paper A ‐ SOLUTIONS
  2. 了解java虚拟机—垃圾回收算法(5)
  3. hive中时间操作(一)
  4. DAY7-Python学习笔记
  5. 使用cnpm代替npm
  6. zend studio调试
  7. IOS开发基础知识--碎片34
  8. 微信公众号开发 常用脚本累计
  9. Win7下JDK环境变量设置批处理(转)
  10. 高质量c/c++编程(10)