先上一段代码。

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            ContainerBuilder builder = new ContainerBuilder();//容器构造器  组件中的类型通过此对象注册到容器中
            builder.RegisterType<AutoFacManager>();//注册类型
            builder.RegisterType<Worker>().As<IPerson>();//注册类型且用as方法指定此类型是IPerson接口
            using (IContainer container = builder.Build())//build方法创建容器
            {
                AutoFacManager manager = container.Resolve<AutoFacManager>();//通过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.明确autofac的作用:简单说,自动创建程序所依赖对象的实例,解除程序中的强依赖。(如Program类和AutoFacManager类)

2.思考:它何时帮你创建?在你需要使用这个对象的时候也就是获取这个对象即resolve时

创建的前提是什么?你已经向autofac注册了这个对象所依赖的资源(类型注册)和(类型关联),autofac会进行匹配。

可学习的实例:http://www.cnblogs.com/liping13599168/archive/2011/07/16/2108209.html  引入配置文件

IoC容器Autofac正篇之简单实例(四)的更多相关文章

  1. IoC容器Autofac正篇之简单实例

    先上一段代码. namespace ConsoleApplication3 { class Program { static void Main(string[] args) { ContainerB ...

  2. IoC容器Autofac正篇之类型注册(四)

    Autofac类型注册 类型注册简单的从字面去理解就可以了,不必复杂化,只是注册的手段比较丰富. (一)类型/泛型注册 builder.RegisterType<Class1>(); 这种 ...

  3. IoC容器Autofac正篇之类型注册(五)

    Autofac类型注册 类型注册简单的从字面去理解就可以了,不必复杂化,只是注册的手段比较丰富. (一)类型/泛型注册 builder.RegisterType<Class1>(); 这种 ...

  4. IoC容器Autofac正篇之依赖注入(六)

    依赖注入,这个专业词我们可以分为两个部分来理解: 依赖,也就是UML中描述事物之间关系的依赖关系,依赖关系描述了事物A在某些情况下会使用到事物B,事物B的变化会影响到事物A: 注入,医生通过针头将药物 ...

  5. IoC容器Autofac正篇之依赖注入(七)

    依赖注入,这个专业词我们可以分为两个部分来理解: 依赖,也就是UML中描述事物之间关系的依赖关系,依赖关系描述了事物A在某些情况下会使用到事物B,事物B的变化会影响到事物A: 注入,医生通过针头将药物 ...

  6. IoC容器Autofac正篇之类型关联(服务暴露)(七)

    类型关联 类型关联就是将类挂载到接口(一个或多个)上去,以方便外部以统一的方式进行调用(看下例). 一.As关联 我们在进行手动关联时,基本都是使用As进行关联的. class Program { s ...

  7. IoC容器Autofac正篇之类型关联(服务暴露)(八)

    类型关联  类型关联就是将类挂载到接口(一个或多个)上去,以方便外部以统一的方式进行调用(看下例). 一.As关联 我们在进行手动关联时,基本都是使用As进行关联的. 1 2 3 4 5 6 7 8 ...

  8. IoC容器Autofac正篇之解析获取(五)

    解析获取的方式有如下几种: Resolve class Program { static void Main(string[] args) { var builder = new ContainerB ...

  9. IoC容器Autofac正篇之解析获取(六)

    解析获取的方式有如下几种: Resolve class Program { static void Main(string[] args) { var builder = new ContainerB ...

随机推荐

  1. webapp在Android中点击链接的时候会有淡蓝色的遮罩层

    body{-webkit-tap-highlight-color: rgba(0,0,0,0);}

  2. Linux系统安装rar压缩软件

    将 hebaodans.com 目录打包为 hebaodans.rar # rar a hebaodans.rar ./hebaodans.com/ 解压 hebaodans.rar 到当前目录 # ...

  3. 大数据时代之hadoop(一):hadoop安装

    1.hadoop版本介绍 0.20.2版本以前(不含该版本)的配置文件都在default.xml中. 0.20.x以后的版本不含有eclipse插件的jar包,由于eclipse的版本不一,所以就需要 ...

  4. 关于js优化和css优化

    css优化: 1.css代码的压缩. 2.css文件的合并. 3.不滥用float,因为float在渲染时计算量比较大,所以尽量减少使用float. 4.避免在html标签中写style属性. js优 ...

  5. VS2013使用EF与mysql数据库.

    一个VS2013的mvc+EF+mysql的项目,需要连接Mysql数据库 一,下载一个mysql-for-visualstudio-1.2.3.msi,在自己的电脑上安装,这个是解决在创建实体模型( ...

  6. iOS开发QQ空间半透明效果的实现

    //1.首先我们可以确定的是cell的半透明, /* white The grayscale value of the color object, specified as a value from ...

  7. sql表命名规范

    tb_new_Count 新闻内容表:首先表加tb_,如果是视图则加V_存储过程加_p. 下划线后面要大写. 切记.(萌萌的国庆要加油)

  8. Java 4

    1.继承的问题 子类是父类的一个扩展,子类可以利用父类的属性与行为,这种情况子类会破坏父类的封装 为了保持父类良好的封装性,设计父类有以下规则: 如果要把某类设计为最终类则需要添加final修饰符,或 ...

  9. Leetcode 074 Search a 2D Matrix

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  10. 创建mysql数据表成功

    create table picindex(id int NOT NULL AUTO_INCREMENT,userName varchar(255) NOT NULL,cur int(11) NOT ...