zoukankan      html  css  js  c++  java
  • Autofac 控制反转(1)

    控制反转:把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组建的装配和管理。
        (对组件对象控制权的转移,从程序代码本身转移到外部容器)
    常用的IoC组件有:  
    spring.net , 
    Unity, 
    Castle Windsor,
    Autofac,
    StructureMap, 
    Ninject 
    由于网上各方评论都说Autofac效率较高,所以先写一个demo,激励一下自己以后继续写博客。。。

    demo

     1  var container = new ContainerBuilder();    // 建立容器
     2             container.RegisterType<DbRespository>();   // 在容器中注册信息
     3             container.RegisterType<SqlServerRespository>().AsImplementedInterfaces();
     4             //container.RegisterType<RedisRespository>().AsImplementedInterfaces();
     5             //container.RegisterInstance(new RedisRespository()).AsImplementedInterfaces();
     6 
     7             // 从App.config 文件进行读取
     8             container.RegisterModule(new ConfigurationSettingsReader("autofac"));
     9 
    10             using (var obj = container.Build())
    11             {
    12                 var manager = obj.Resolve<DbRespository>();
    13                 manager.Execute();
    14             }
    15             Console.Read();
    View Code

    在外部文件App.config进行配置

     1   <configSections>
     2     <section name="autofac" type="Autofac.Configuration.SectionHandler,Autofac.Configuration" />
     3   </configSections>
     4   <startup>
     5     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
     6   </startup>  
     7 
     8   <autofac defaultAssembly="AutofacDemo">
     9     <components>
    10       <component type="AutofacDemo.OracleRespository, AutofacDemo" service="AutofacDemo.IRespository" />
    11     </components>
    12   </autofac>
    View Code

    通过以上代码,不难看出。建立的container容器,通过Autofac引入外部文件,然后完成IOC的反转控制。

    跳到内部你会发现,其实内部就是通过反射生成对应的类,完成外部的控制。

    看来,以后得深入研究一下反射了。。。

  • 相关阅读:
    Ruby学习笔记5: 动态web app的建立 (2)
    Ruby学习笔记4: 动态web app的建立
    Ruby学习笔记3:Rendering(渲染)和 Redirect(重定向)
    对互联网垂直社交产品的分析
    测试 | 代码覆盖测试工具 | Eclemma
    Jquery | 基础 | 事件的链式写法
    Jquery | 基础 | html()
    Serervlet | 慕课课程实战 | 编写登录逻辑
    Jquery | 外部插入节点
    Jquery | 基础 | .hover()
  • 原文地址:https://www.cnblogs.com/ArrowTip/p/autofac.html
Copyright © 2011-2022 走看看