zoukankan      html  css  js  c++  java
  • Aso.Net Core 的配置系统Configuration--转

    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; } }

     补充:IConfiguration.Get<T>()即可获得实体,所以我们无需从根获取起,如获取SQL的连接串,也可以这样写:

    1、configuration.GetSection("DataBase").Get<DataBase>().SqlServer.ConnectionString;

    2、configuration.GetSection("DataBase").GetSection("SqlServer").Get<SqlServer>().ConnectionString;

    等等。

     
    针对经常要使用的情形,建议将其纳入IOC
    services.Configure<DataBase>(Configuration.GetSection("DataBase"));

    这会将其设置为一个单例注入到容器中。

     
     
  • 相关阅读:
    21-while里的break简单用法
    20-使用while循环求从1累加至100的值
    19-random猜数
    18-random猜数,直到正确。
    17-简化后的石头剪刀布
    16-if实现石头剪刀布
    生成随机数
    转换数字的进制(Integer、Long)
    数字的舍入
    格式化数字
  • 原文地址:https://www.cnblogs.com/ceci/p/11974748.html
Copyright © 2011-2022 走看看