zoukankan      html  css  js  c++  java
  • IoC容器Autofac正篇之简单实例

     先上一段代码。

    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  引入配置文件

  • 相关阅读:
    Python 读写
    测试项目总结之手淘安全中心
    Python 单元测试
    Python __name__变量
    java数据类型取值范围
    java数据类型之间的转换
    Git 常用命令清单
    Linux Distribution
    UNIX&Linux发展图谱
    Linux 软件大全
  • 原文地址:https://www.cnblogs.com/tiantianle/p/5146841.html
Copyright © 2011-2022 走看看