using Microsoft.Extensions.Configuration.Json;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Core.Helper
{
///
/// appsettings.json操作类
///
public class AppSettings
{
// 定义一个静态的 IConfiguration 对象
public static IConfiguration Configuration { get; set; }
// 定义一个静态的 string 对象
static string contentPath { get; set; }
// 构造函数,传入 contentPath 参数
public AppSettings(string contentPath)
{
string Path = "appsettings.json";
//如果你把配置文件 是 根据环境变量来分开了,可以这样写
//Path = $"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json";
Configuration = new ConfigurationBuilder()
.SetBasePath(contentPath)
.Add(new JsonConfigurationSource { Path = Path, Optional = false, ReloadOnChange = true })//这样的话,可以直接读目录里的json文件,而不是 bin 文件夹下的,所以不用修改复制属性
.Build();
}
// 构造函数,传入 IConfiguration 参数
public AppSettings(IConfiguration configuration)
{
Configuration = configuration;
}
///
/// 封装要操作的字符
///
/// 节点配置
///
public static string Get(params string[] sections)
{
try
{
if (sections.Any())
{
return Configuration[string.Join(":", sections)];
}
}
catch (Exception) { }
return "";
}
///
/// 从配置中获取指定节点下的列表数据
///
/// 列表元素类型
/// 配置节点路径参数
/// 绑定后的列表对象
/// 需要引用 Microsoft.Extensions.Configuration.Binder 包
public static List Get(params string[] sections)
{
List list = new List();
// 引用 Microsoft.Extensions.Configuration.Binder 包
Configuration.Bind(string.Join(":", sections), list);
return list;
}
///
/// 从配置中获取指定路径的值
///
/// 配置项的路径
/// 返回配置值,若获取失败则返回空字符串
public static string GetValue(string sectionsPath)
{
try
{
return Configuration[sectionsPath];
}
catch (Exception) { }
return "";
}
}
}