• .Net Core读取JSON配置文件


    NuGet包:

      Microsoft.Extensions.Configuration.Binder(将读取到的配置文件转换成指定类型)

      Microsoft.Extensions.Configuration

      Microsoft.Extensions.Configuration.Environment(可读取环境变量,系统变量)

      Microsoft.Extensions.Configuration.FileExtensions(查找配置文件位置)

      Microsoft.Extensions.Configuration.Json(添加 配置源文件操作)

    测试所用配置文件:

      

    {
      "classValue": {
        "firstValue": "first get config value",
        "secondValue": "second get config value"
      },
      "singleValue": "single",
      "arrayValue": [
        {
          "firstValue": "first class one",
          "secondValue": "first class two"
        },
        {
          "firstValue": "second class one",
          "secondValue": "second class two"
        }
      ]
    }

    代码:

      1. 创建ConfigurationBuilder对象

      

    public IConfigurationRoot ConfigBuild()
            {
                var config = new ConfigurationBuilder();
                //设置文件路径,配置热加载(当文件改变时,重新加载)***********************
                config.SetBasePath(Directory.GetCurrentDirectory().ToString()).Add(new JsonConfigurationSource { Path = "appSetting.json", ReloadOnChange = true });
                //不热加载
                //config.SetBasePath(Directory.GetCurrentDirectory().ToString()).AddJsonFile("appSetting.json");
                //可读取环境变量,系统变量(提供重载 prefix,会筛选出符合前缀名的环境/系统变量) ******************************
                //config.AddEnvironmentVariables();
                config.AddEnvironmentVariables("test");
                return config.Build();
            }

      2.读取配置文件

      包含了JSON中常见的键值格式。单个值,类,数组

     NetCoreReadConfig netCoreReadConfig = new NetCoreReadConfig();
                //读取类
                //ConfigTestClass testConfigValue = netCoreReadConfig.ConfigBuild().GetSection("classValue").Get<ConfigTestClass>();
                // ******************
                //var signleConfig = netCoreReadConfig.ConfigBuild()["classValue:firstValue"];
                //Console.WriteLine(testConfigValue.firstValue);
                //Console.WriteLine(testConfigValue.secondValue);
    
                //读取单个值
                var signleConfig = netCoreReadConfig.ConfigBuild()["singleValue"];
                Console.WriteLine(signleConfig);
    
                //读取环境变量、系统变量
                //Environment.SetEnvironmentVariable("codeAddOsConfig","codeAdd");
                //var osEnvironmentConfig = netCoreReadConfig.ConfigBuild().GetSection("ASPNETCORE_ENVIRONMENT").Value;
                //var osEnvironmentConfig = netCoreReadConfig.ConfigBuild().GetSection("codeAddOsConfig").Value;
                //Console.WriteLine(osEnvironmentConfig);
    
                //读取数组
                ConfigTestClass[] arrayConfig;
                arrayConfig = netCoreReadConfig.ConfigBuild().GetSection("arrayValue").Get<ConfigTestClass[]>();
                foreach (var item in arrayConfig)
                {
                    Console.WriteLine(item.firstValue);
                }
    
                Console.ReadKey();

    另外补充

      1.因为 IConfigurationRoot 继承自 IConfiguration,所以使用 GetSection("") 或 [""] 都可以

      2.系统环境变量查看:控制面板->系统高级设置 | <变量的优先等级博主未测试> | <博主尝试手动添加系统/用户变量,重启后才生效,大家如果有什么提示可以评论补充>

      

       环境变量 | <这个是立即生效的>

      

  • 相关阅读:
    美国地质调研局USGS
    SAR 图像
    Matlab 之meshgrid, interp, griddata 用法和实例
    ENVISAT卫星及ASAR数据介绍
    ASP.NET Integration with IIS7
    ubuntu下C/C++基本开发环境的配置
    C++ Objects Part 1: Basic Object Memory Layout
    Socket Programming in Windows
    Memory Layout for Multiple and Virtual Inheritance
    Common Type System—Memory Layout at C# Online.NET
  • 原文地址:https://www.cnblogs.com/lbjlbj/p/14431746.html
Copyright © 2020-2023  润新知