开源框架Autofac使用入门
一、Autofac是什么 说到Autofac,我们就要首先了解依赖注入(Dependency Injection,简称DI)。DI不是什么技术,而是一种设计模式,是用来降低计算机程序之间的耦合的。在.net平台,有很多依赖注入工具,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,Autofac是一款较为轻量级的、性能优异的、支持xml配置的依赖注入工具。这也是为什么我选择先学习Autofac的原因。 1.1 依赖注入(DI)和控制反转(IOC) 依赖注入(Dependency Injection)DI是一种软件设计模式,用来允许我们开发松耦合代码。DI是一种很好的方式去减少软件模块之间的紧耦合关心。DI帮助更好的去管理软件中的功能更新和复杂度。DI的目的是让代码可维护。依赖注入模式使用构造器对对象初始化并提供需要的依赖给对象,也就意味着允许你从类外部注入一个依赖项。 控制反转(IOC,Inversion Of Contrl)也是一种设计模式,它是对DIP(依赖倒置原则,Dependence Inversion Principle)的一种实现。IOC指的是一种框架或运行时的编程风格,用来控制程序流程。IOC意味着我们可以改变常规的控制方式。它在DIP下得以实现。许多基于.net框架的软件开发都使用IOC。IOC更多的是一个通用术语,不仅仅局限于DI。 1.2 DI和IOC在项目中起到什么作用 假设你的客户端类需要使用一个服务类组件,那么你能做的就是让你的客户知道一类IService接口而不是服务类。这样,你就可以随时改变Service类的实现而不会中断已经部署的代码。 二、Autofac如何使用 首先你必须获取AutoFac,这里你可以通过各种方式加载它,我这里还是通过VS中的NuGet来加载AutoFac,不论是哪种方式,最终的目的就是将 Autofac.dll,Autofac.Configuration.dll 这两个程序集引用到你的项目中。这样在你的项目中,如果想使用AutoFac,只需添加其命名空间引用即可~ 这里我用的是2.6版本的(PS:Autofac.Configuration.dll V4.1 已经没有ConfigurationSettingsReader 用法稍有改变,还没去研究) 2.1 Demo分析 代码Demo,这里在控制台应用程序中使用,首先创建一个类 /// <summary> /// 定义一个Animal接口 /// </summary> public interface IAnimal { void DogCall(); void CatCall(); } 然后,写一个类继承此接口 public class Call: IAnimal { public void CatCall() { Console.WriteLine("喵喵喵"); } public void DogCall() { Console.WriteLine("汪汪汪"); } } 接着,用Autofac static void Main(string[] args) { var builder = new ContainerBuilder();//创建一个IOC容器 builder.RegisterType<Call>().As<IAnimal>();//通过AS可以让Call类中通过构造函数依赖注入类型相应的接口。 //Build()方法生成一个对应的Container实例,这样,就可以通过Resolve解析到注册的类型实例。 using (var container = builder.Build()) { //当注册的类型在相应得到的容器中可以Resolve你的Call类中所有实例。 var call = container.Resolve<IAnimal>(); call.DogCall(); call.CatCall(); } Console.ReadLine(); } 使用Autofac的步骤:第一步,定义一个Container容器。第二步,创建builder,并在builder中注册类型。第三步,实例化容器。第四步,在需要使用接口的地方,通过container来解析得到一个借口的实例。 ...