博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Autofac 解释第一个例子 《第一篇》
阅读量:6755 次
发布时间:2019-06-26

本文共 1819 字,大约阅读时间需要 6 分钟。

  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
(); builder.RegisterType
().As
(); using (IContainer container = builder.Build()) { AutoFacManager manager = container.Resolve
(); 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

 

转载地址:http://ihgho.baihongyu.com/

你可能感兴趣的文章
简单三步,搞定“量产”Windows 2008
查看>>
excel查找替换转义问号
查看>>
初始化游戏状态数据
查看>>
delphi 显示窗体系统目录 源码
查看>>
PowerDesigner 业务处理模型( BPM ) 说明
查看>>
Redis内存存储结构分析
查看>>
OCP终于考完了
查看>>
Cocos2D:滚动滚屏黑边问题
查看>>
Android 4.1最终版SDK和ADT Plugin全线发布
查看>>
jive论坛
查看>>
[Android问答] ListView如何加载远程图片?(附代码)
查看>>
k-means clustering - Wikipedia, the free encyclopedia
查看>>
三星S6D1121主控彩屏(240*320*18bit,262K)图形设备接口(GDI)实现
查看>>
head first java 01 ( 1 ~ 3 章 )
查看>>
Superhero.js – 构建大型 JavaScript 应用程序的最佳资源
查看>>
什么是UAT测试?
查看>>
FireDAC 下的 Sqlite [8] - 自定义函数
查看>>
Android 驱动测试程序H-M-S <2>
查看>>
Swift语言指南(七)--语言基础之布尔值和类型别名
查看>>
Hadoop 安装记录
查看>>