Skip to main content
 首页 » 编程设计

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

2022年07月15日182三少

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链接数据库


本文参考链接:https://www.cnblogs.com/szlblog/p/8040475.html
阅读延展