using System;
using System.IO;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using Microsoft.Extensions.Configuration.Binder;
using System.Collections.Generic;
namespace CommonUtil
{
///
/// 配置工具类
///
public class ConfigUtil
{
///
/// 配置项容器
///
public static IConfiguration Configuration { get; set; }
///
/// 静态构造函数
///
static ConfigUtil()
{
string fileName = "appsettings.json";
string directory = AppContext.BaseDirectory;
directory = directory.Replace("\\", "/");
string filePath = $"{directory}/{fileName}";
if (!File.Exists(filePath))
{
int length = directory.IndexOf("/bin");
filePath = $"{directory.Substring(0, length)}/{fileName}";
}
Configuration = new ConfigurationBuilder()
.Add(new JsonConfigurationSource { Path = fileName, ReloadOnChange = true })
.Build();
}
///
/// 读取配置文件值
///
/// 指定类型
/// 键
///
public static T GetValue(string key)
{
return GetValue(key, default(T));
}
///
/// 读取配置文件值
///
/// 指定类型
/// 键
/// 如果未找到该键,则过载允许你提供默认值
///
public static T GetValue(string key, T defaultValue)
{
return Configuration.GetValue(key, defaultValue);
}
///
/// 判断是否存在key
///
///
///
public static bool IsExist(string key)
{
return Configuration.GetSection(key).Exists();
}
///
/// 判断是否存在key
///
///
///
public static IEnumerable GetChildren(string key)
{
return Configuration.GetSection(key).GetChildren();
}
}
}