Autofac 解释第一个例子 《第一篇》
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2016-07-13 C#在线更新程序[下载程序、解压缩程序、控制台程序]
2016-07-13 C# 定时器事件(设置时间间隔,间歇性执行某一函数,控制台程序)
2016-07-13 C#多线程学习之(五)使用定时器进行多线程的自动管理
2016-07-13 用C#用C#实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码
2016-07-13 C# 文件与目录的基本操作(System.IO)
2016-07-13 C# 多线程详解 Part.03 (定时器)
2016-07-13 C#中三种定时器对象的比较