Blog.Core/Blog.Core.Common/Helper/Appsettings.cs
LemonNoCry 50a936bdeb 增加IOption配置
原有AppSetting 手写字符串去读取,极容易出错,扩展性也低:如果要修改或者增加值 就要到处都写
保留AppSetting基础上增加IOption方便读取配置,可反序列对象

增加IConfigurableOptions接口
可参考SeqOptions配置
配置文件名为Option或Options结尾,匹配时会忽略Option或Options

SeqOptions->对应 AppSetting中Seq节点

可直接在控制器中注入使用 参考ValuesController
 private readonly SeqOptions _seqOptions;
cto(IOptions<SeqOptions> seqOptions){
    _seqOptions = seqOptions.Value;
}
2023-04-22 11:10:30 +08:00

92 lines
2.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Blog.Core.Common
{
/// <summary>
/// appsettings.json操作类
/// </summary>
public class AppSettings
{
public static IConfiguration Configuration { get; set; }
static string contentPath { get; set; }
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();
}
public AppSettings(IConfiguration configuration)
{
Configuration = configuration;
}
/// <summary>
/// 封装要操作的字符
/// </summary>
/// <param name="sections">节点配置</param>
/// <returns></returns>
public static string app(params string[] sections)
{
try
{
if (sections.Any())
{
return Configuration[string.Join(":", sections)];
}
}
catch (Exception)
{
}
return "";
}
/// <summary>
/// 递归获取配置信息数组
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sections"></param>
/// <returns></returns>
public static List<T> app<T>(params string[] sections)
{
List<T> list = new List<T>();
// 引用 Microsoft.Extensions.Configuration.Binder 包
Configuration.Bind(string.Join(":", sections), list);
return list;
}
/// <summary>
/// 根据路径 configuration["App:Name"];
/// </summary>
/// <param name="sectionsPath"></param>
/// <returns></returns>
public static string GetValue(string sectionsPath)
{
try
{
return Configuration[sectionsPath];
}
catch (Exception)
{
}
return "";
}
}
}