Aso.Net Core 的配置系统Configuration

2019-11-30 来源: ☆のLueng☆ 发布在  https://www.cnblogs.com/Lueng/p/11963819.html

Aso.Net Core 的配置系统Configuration

​ 1.以前的配置文件格式为XML

​ 2.新版的配置文件格式支持 { json ,xml, ini, memory, command, env..... }

01.Json文件的弱类型方式读取

  1. Json文件 【Microsoft.Extensions.Configuration.Json】

  2. 添加配置文件json文件,并设置内容

    {
      "DataBase": {
        "SqlServer": {
          "ConnectionString": "server=.;database=testdb;uid=sa;pwd=123;"
        },
        "MySql": {
          "IpAddress": "127.0.0.1",
          "port": 3306
        }
      },
      "endArray": [
        { "endId": 20 },
        { "endId": "30" }
      ]
    }
  3. 获取数据

    private static void Main(string[] args)
    {
        IConfiguration configuration = new ConfigurationBuilder()
            .SetBasePath(Environment.CurrentDirectory)
            .AddJsonFile("AppSettings.json",true,true)
            .AddInMemoryCollection()
            .Build();
        var str1 = configuration["DataBase:SqlServer:ConnectionString"];
        var str2 = configuration["endArray:0:endId"];
        Console.WriteLine($"{str1}+---{str2}");
    }

02.Json文件的强类型获取方式

1.添加引用【Microsoft.Extensions.Configuration.Binder】

2.GetValue方式获取

private static void Main(string[] args)
{
    IConfiguration configuration = new ConfigurationBuilder()
        .SetBasePath(Environment.CurrentDirectory)
        .AddJsonFile("AppSettings.json",true,true)
        .AddInMemoryCollection()
        .Build();

    //GetValue获取方式
    int val = configuration.GetValue<int>("endArray:0:endId");
    Console.WriteLine(val);
}

3.实体映射方式

private static void Main(string[] args)
{
    IConfiguration configuration = new ConfigurationBuilder()
        .SetBasePath(Environment.CurrentDirectory)
        .AddJsonFile("AppSettings.json",true,true)
        .AddInMemoryCollection()
        .Build();

    //Bind 获取方式
    Root root=new Root();
    configuration.Bind(root);
    var ip = root.DataBase.MySql.IpAddress;
    var entid = root.endArray[0].endId;
    Console.WriteLine($"{ip}{entid}");
    //Get<T> 获取
    var root = configuration.Get<Root>();
    var ip = root.DataBase.MySql.IpAddress;
    var entid = root.endArray[0].endId;
    Console.WriteLine($"{ip}{entid}");

}
//这里是实体类
 public class SqlServer
    {
        /// <summary>
        ///
        /// </summary>
        public string ConnectionString { get; set; }
    }

    public class MySql
    {
        /// <summary>
        ///
        /// </summary>
        public string IpAddress { get; set; }
        /// <summary>
        ///
        /// </summary>
        public int port { get; set; }
    }

    public class DataBase
    {
        /// <summary>
        ///
        /// </summary>
        public SqlServer SqlServer { get; set; }
        /// <summary>
        ///
        /// </summary>
        public MySql MySql { get; set; }
    }

    public class EndArray
    {
        /// <summary>
        ///
        /// </summary>
        public int endId { get; set; }
    }

    public class Root
    {
        /// <summary>
        ///
        /// </summary>
        public DataBase DataBase { get; set; }
        /// <summary>
        ///
        /// </summary>
        public List<EndArray> endArray { get; set; }
    }

相关文章