zoukankan      html  css  js  c++  java
  • asp.net core配置项示例代码

    1、IConfigurationSource:表示一个配置源,其Build方法生成的IConfigurationProvider用于从当前配置源中读取key-value值(TryGey读取、Set设置键值、Load加载配置源到key-value集合、GetChildKey获取根据前缀key获取子key集合,并将earlierKeys添加到返回的字符串集合中)。IConfigurationProvider有直接实现类ConfigurationProvider,自定义IConfigurationProvider的时候,一般直接继承ConfigurationProvider类。

    image
    image

    2、IConfigurationBuilder 用于 IConfigurationRoot(从IConfiguration继承) 对象,这也是最终供我们使用的key-value集合 。IConfigurationBuilder接口中 Sources 属性维护了一系列的 IConfigurationSource 列表。Properties 属性维护了和文件相关的字典。

    image

    image

    image

    static void Main(string[] args)
            {
                //1、创建IConfigurationBuilder
                IConfigurationBuilder builder = new ConfigurationBuilder();
    
                //2、创建配置源并添加到Builder中 IConfigurationSource
    
                //2、1系统自带的IConfigurationSource
                List<KeyValuePair<string, string>> InitialData = new List<KeyValuePair<string, string>>();
                InitialData.Add(new KeyValuePair<string, string>("name", "caoruipeng"));
                InitialData.Add(new KeyValuePair<string, string>("info:age", "29"));
                InitialData.Add(new KeyValuePair<string, string>("info:school", "北华大学"));
                InitialData.Add(new KeyValuePair<string, string>("user:name", "北华大学"));
                IConfigurationSource source = new MemoryConfigurationSource() { InitialData = InitialData };
                builder.Add(source);
    
                //2、2自定义IConfigurationSource
                IDictionary<string, string> data = new Dictionary<string, string>();
                data.Add("dbkey", "dbvalue");
                IConfigurationSource dbSource = new DBConfigurationSource(data);
                builder.Add(dbSource);
    
                //3、创建key-value集合
                IConfigurationRoot configuration = builder.Build();
    
                //4、获取key-value
                string value = configuration["name"];
                value = configuration.GetValue<string>("name");
                Console.WriteLine($"key:name,value:{value}");
                value = configuration.GetValue<string>("dbkey");
                Console.WriteLine($"key:dbkey,value:{value}");
    
                IConfigurationSection section = configuration.GetSection("info");
            }
        /// <summary>
        /// 自定义配置源
        /// </summary>
        public class DBConfigurationSource : IConfigurationSource
        {
            IDictionary<string, string> data = new Dictionary<string, string>();
            public DBConfigurationSource(IDictionary<string, string> data)
            {
                this.data = data;
            }
            public IConfigurationProvider Build(IConfigurationBuilder builder)
            {
                return new DBConfigurationProvider(data);
            }
        }
        /// <summary>
        /// 自定义配置源的Provider,用于从配置源中读取key-value值
        /// </summary>
        public class DBConfigurationProvider : ConfigurationProvider
        {
            public DBConfigurationProvider(IDictionary<string, string> data)
            {
                Data = data;
            }
            public override void Load()
            {
                base.Load();
            }
        }
    

    3、系统自带的配置源 也就是IConfigurationSource的实现类

    3.1 MemoryConfigurationSource:从内存中加载读取key-value。

    3.2 ChainedConfigurationSource:直接维护了一个IConfiguration对象,通过IConfiguration加载读取key-value配置。

    3.3 CommandLineConfigurationSource:从命令行加载读取key-value,从命令行读取命令,按 = 分割为key-value。

    3.4 EnvironmentVariablesConfigurationSource:从环境变量中加载读取key-value。

    3.5 FileConfigurationSource:抽象类,从文件中加载配置

    3.5.1 JsonConfigurationSource : FileConfigurationSource:从json配置文件中加载配置。
    3.5.2 IniConfigurationSource : FileConfigurationSource:从ini配置文件中加载配置
    3.5.3 XmlConfigurationSource : FileConfigurationSource:从xml配置文件中加载配置

    3.6 StreamConfigurationSource:抽象类,从Stream流中加载配置

    3.6.1 JsonStreamConfigurationSource:StreamConfigurationSource:从Json流中加载配置。
    3.6.2 XmlStreamConfigurationSource:StreamConfigurationSource:从xml流中加载配置。

    3.3.3 IniStreamConfigurationSource:StreamConfigurationSource:从ini流中加载配置。

  • 相关阅读:
    [笔记] 辛普森积分
    Luogu P4175 [CTSC2008]网络管理
    Luogu P4331 [BOI2004]Sequence 数字序列
    Luogu P1456 Monkey King
    Luogu P3261 [JLOI2015]城池攻占
    Luogu P4309 [TJOI2013]最长上升子序列
    Luogu P4246 [SHOI2008]堵塞的交通
    Luogu P3638 [APIO2013]机器人
    Luogu P4294 [WC2008]游览计划
    CF613D Kingdom and its Cities
  • 原文地址:https://www.cnblogs.com/caoruipeng/p/15689650.html
Copyright © 2011-2022 走看看