Autofac是轻量级的开源Ioc容器,在这里可以下载http://code.google.com/p/autofac/。如果你用过其他的Ioc容器,那么学习Autofac使用也会比较容易,下面将通过一些例子来讲解其用法。
先看一个例子:
准备代码,和之前的一样
interface IDal { void save(); } class sqlServerDal : IDal { public void save() { Console.WriteLine("sqlServer save."); } } class OracleDal : IDal { public void save() { Console.WriteLine("Oracle save."); } }
接下来就是Ioc的实现了:
class DataFactory { public static IContainer GetContainers() { var builder = new ContainerBuilder(); builder.Register<IDal>(c => new OracleDal()).SingleInstance(); return builder.Build() ; } }
接下来就是获取对象的实例并调用
static void Main(string[] args) { var container = DataFactory.GetContainers(); container.Resolve<IDal>().save(); Console.Read(); }
好,我们来分析一下代码,看看Autofac容器的构造及获取实例的过程:从代码中可以看出,和Unity类似,也是通过三步完成的。
同样的,组件及实例对象的映射关系可以通过XML文件进行配置:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="autofac" type="Autofac.Configuration.SectionHandler,Autofac.Configuration"/> </configSections> <autofac> <components> <component type="AutofacDemo.OracleDal,AutofacDemo" service="AutofacDemo.IDal,AutofacDemo" /> </components> </autofac> </configuration>
调用配置文件注册组件
public static IContainer GetContainers() { var builder = new ContainerBuilder(); // builder.Register<IDal>(c => new OracleDal()).SingleInstance(); builder.RegisterModule(new ConfigurationSettingsReader("autofac")); return builder.Build() ; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。