• 通过配置的方式Autofac 《第三篇》


    一、基本配置

      1、通过配置的方式使用Autofac

      <?xml version="1.0"?>
      <configuration>
        <configSections>
          <section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/>
        </configSections>
        <autofac defaultAssembly="ConsoleApplication3">
          <components>
            <component type="ConsoleApplication3.Worker, ConsoleApplication3" service="ConsoleApplication3.IPerson" />
          </components>
        </autofac>
      </configuration>

      2、通过RegisterModule方式使用配置文件中的信息

        static void Main(string[] args)
        {
            ContainerBuilder builder = new ContainerBuilder();
            builder.RegisterType<AutoFacManager>();
            builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
            using (IContainer container = builder.Build())
            {
                AutoFacManager manager = container.Resolve<AutoFacManager>();
                manager.Say();
            } 
                
            Console.ReadKey();
        }

      3、通过Register的方式

        builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
        builder.Register(c => new AutoFacManager(c.Resolve<IPerson>()));

     

     
     
     【注意】:在web.config或app.config中配置针对Autofac.Configuration低于4.0才行
     
     

    针对4.0及以上版本

    官方推荐使用单独json或xml文件配置

    http://docs.autofac.org/en/latest/configuration/xml.html#quick-start

    JSON格式

    {
      "defaultAssembly": "Autofac.Example.Calculator",
      "components": [{
        "type": "Autofac.Example.Calculator.Addition.Add, Autofac.Example.Calculator.Addition",
        "services": [{
          "type": "Autofac.Example.Calculator.Api.IOperation"
        }],
        "injectProperties": true
      }, {
        "type": "Autofac.Example.Calculator.Division.Divide, Autofac.Example.Calculator.Division",
        "services": [{
          "type": "Autofac.Example.Calculator.Api.IOperation"
        }],
        "parameters": {
          "places": 4
        }
      }]
    }

    xml格式

    <?xml version="1.0" encoding="utf-8" ?>
    <autofac defaultAssembly="Autofac.Example.Calculator">
        <components name="0">
            <type>Autofac.Example.Calculator.Addition.Add, Autofac.Example.Calculator.Addition</type>
            <services name="0" type="Autofac.Example.Calculator.Api.IOperation" />
            <injectProperties>true</injectProperties>
        </components>
        <components name="1">
            <type>Autofac.Example.Calculator.Division.Divide, Autofac.Example.Calculator.Division</type>
            <services name="0" type="Autofac.Example.Calculator.Api.IOperation" />
            <injectProperties>true</injectProperties>
            <parameters>
                <places>4</places>
            </parameters>
        </components>
    </autofac>

    使用代码

    // Add the configuration to the ConfigurationBuilder.
    var config = new ConfigurationBuilder();
    config.AddJsonFile("autofac.json");
    
    // Register the ConfigurationModule with Autofac.
    var module = new ConfigurationModule(config.Build());
    var builder = new ContainerBuilder();
    builder.RegisterModule(module);
     这里我遇到一个问题,就是
    config.AddJsonFile("autofac.json")

    这个方法无法被识别到,后来在网上找到帮助,却是一个类库Microsoft.Extensions.Configuration.Json.dll

    添加了这个累计就可以了
  • 相关阅读:
    神奇的HTML5画图应用
    Eclipse REST 库使用
    在应用中使用Ext Loader
    新浪微博XSS攻击事件
    数字图像处理空间变换
    安装制作不用愁—Wise installation入门教程
    ExtJS 4中自定义Grid列标题的对齐方式
    页面的兼容性从认识<!DOCTYPE>开始
    ExtJS 4.1有什么值得期待?
    ExtJS应用架构设计(二)
  • 原文地址:https://www.cnblogs.com/caoyc/p/6370650.html
Copyright © 2020-2023  润新知