微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ioc容器Autofac介绍

Autofac是轻量级的开源Ioc容器,在这里可以下载http://code.google.com/p/autofac/。如果你用过其他的Ioc容器,那么学习Autofac使用也会比较容易,下面将通过一些例子来讲解其用法


先看一个例子:

首先新建一个工程,添加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类似,也是通过三步完成的。

  1. 创建一个ContainerBuilder,容器构造器。
  2. 登记服务和组件及对应的实例对象
  3. 最后就是通过生成的容器并构造出来的IContainer取对象实例了。



同样的,组件及实例对象的映射关系可以通过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] 举报,一经查实,本站将立刻删除。

相关推荐