AspNet Core 程序写入配置信息并再次读取配置信息

C#

浏览数:167

2019-5-17

AD:资源代下载服务

1.首先创见Core控制台应用程序  并且引入  AspNetCore.All

首先我们写入配置信息:直接代码如下

//配置信息的根对象
        public static IConfigurationRoot Configuration { get; set; }

 //以键值对的形式拼装将要填添加在JSon配置文件的配置信息
            var dic = new Dictionary<string, string>
            {
                {"Class", "配置信息"},
                {"Infor", "User"},
                {"User:0:Name", "xiaoming"},
                {"User:0:Age", "20"},
                {"User:1:Name", "xiao"},
                {"User:1:Age", "22"}
            };
            //创建配置信息读写的对象  基类  IConfigurationBuilder  用于创建配置信息的类
            var builder = new ConfigurationBuilder();
            //AddInMemoryCollection  配置的信息添加到 IConfigurationBuilder中 为其创建配置提供信息
            builder.AddInMemoryCollection(dic);
            //读写配置信息 以键值对的形式创建
            Configuration = builder.Build();

接下来是读取 我们上面写入的配置信息

 //GetSection 读取对象类型的配置信息  Bind 绑定信息
            var user = new User();
            Console.WriteLine("获取单个对象的配置信息");
            Configuration.GetSection("User:0").Bind(user);
            Console.WriteLine($"年龄:{user.Age} 名字:{user.Name}");
            Console.WriteLine("获取对象集合的配置信息");  
           var userList = new List<User>();
            Configuration.GetSection("User").Bind(userList);
            foreach (var item in userList)
            {
                Console.WriteLine($"年龄:{item.Age} 名字:{item.Name}");
            }
            Console.WriteLine("获取单个Key的Values");

           //不是对象的配置信息不能用对象来读取
            Console.WriteLine(Configuration["Infor"]);


            //取值并转换
            var Age = Configuration.GetValue<int>("User:0:Age");
            //取值并转换
            var Age0 = Configuration.GetValue("User:0:Age",0);

User类

    internal class User
    {
        public User()
        {

        }
        public string Name { get; set; }
        public string Age { get; set; }
    }

以下是完整的代码

using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;

namespace 写入配置信息
{
    class Program
    {
        //配置信息的根对象
        public static IConfigurationRoot Configuration { get; set; }
        static void Main(string[] args)
        {
            //首先引入Nuget包  AspNetCore.All

            //以键值对的形式拼装将要填添加在JSon配置文件的配置信息
            var dic = new Dictionary<string, string>
            {
                {"Class", "配置信息"},
                {"Infor", "User"},
                {"User:0:Name", "xiaoming"},
                {"User:0:Age", "20"},
                {"User:1:Name", "xiao"},
                {"User:1:Age", "22"}
            };
            //创建配置信息读写的对象  基类  IConfigurationBuilder  用于创建配置信息的类
            var builder = new ConfigurationBuilder();
            //AddInMemoryCollection  配置的信息添加到 IConfigurationBuilder中 为其创建配置提供信息
            builder.AddInMemoryCollection(dic);
            //读写配置信息 以键值对的形式创建
            Configuration = builder.Build();






            //GetSection 读取对象类型的配置信息  Bind 绑定信息
            var user = new User();
            Console.WriteLine("获取单个对象的配置信息");
            Configuration.GetSection("User:0").Bind(user);
            Console.WriteLine($"年龄:{user.Age} 名字:{user.Name}");
            Console.WriteLine("获取对象集合的配置信息");  
           var userList = new List<User>();
            Configuration.GetSection("User").Bind(userList);
            foreach (var item in userList)
            {
                Console.WriteLine($"年龄:{item.Age} 名字:{item.Name}");
            }
            Console.WriteLine("获取单个Key的Values");

           //不是对象的配置信息不能用对象来读取
            Console.WriteLine(Configuration["Infor"]);


            //取值并转换
            var Age = Configuration.GetValue<int>("User:0:Age");
            //取值并转换
            var Age0 = Configuration.GetValue("User:0:Age",0);

            Console.WriteLine($"Age {Age}");
            Console.WriteLine($"Age0 {Age0}");
            
            Console.ReadKey();
        }
    }

    internal class User
    {
        public User()
        {

        }
        public string Name { get; set; }
        public string Age { get; set; }
    }

}

在实际项目中我封装了如下代码:用于获取配置信息

    /// <summary>
    /// 
    /// </summary>
    public class AspNetCoreApiResultFilter 
    {
        /// <summary>
        ///  获取当前文件路径
        /// </summary>
        public static IHostingEnvironment Envs { get; set; }


        /// <summary>
        /// 重新构造
        /// </summary>
        /// <param name="context"></param>
        public AspNetCoreApiResultFilter( IHostingEnvironment environment)
        {
            Envs = environment;
        }
        /// <summary>
        /// 获取配置信息
        /// </summary>
        /// <param name="ConfigurationKey">JsonKey</param>
        /// <returns></returns>
        public static string Configuration(string ConfigurationKey)
        {
            var BuilderAppStting = new ConfigurationBuilder().SetBasePath(Envs.ContentRootPath).AddJsonFile("appsettings.json");
            var configuration = BuilderAppStting.Build();
            return configuration[ConfigurationKey];
        }
}

调用 Configuration(“appsetings”)   appsetings代表着配置信息的Key

.SetBasePath(Envs.ContentRootPath).AddJsonFile("appsettings.json") 代表着在基础路径上找到配置文件的信息

有不足之处希望大家指出,如果对您有帮助的话帮助推荐  谢谢!

下一章自定义配置信息 EF链接数据库

 

作者:乐途