• 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的反转控制。

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

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

  • 相关阅读:
    python之面向对象编程
    python的模块引用和查找路径
    python的迭代器、生成器、三元运算、列表解析、生成器表达式
    python文件操作
    lesson4-图像分类-小象cv
    lesson3-神经序列模型I-小象
    fast ai环境配置
    YOLO
    lesson2-cnn-fastai
    mask-code-python
  • 原文地址:https://www.cnblogs.com/ArrowTip/p/autofac.html
Copyright © 2020-2023  润新知