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