Blog.Core/Blog.Core.Extensions/ServiceExtensions/AllOptionRegister.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

21 lines
641 B
C#

using Blog.Core.Common;
using Blog.Core.Common.Option.Core;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Linq;
namespace Blog.Core.Extensions.ServiceExtensions;
public static class AllOptionRegister
{
public static void AddAllOptionRegister(this IServiceCollection services)
{
if (services == null) throw new ArgumentNullException(nameof(services));
foreach (var optionType in App.EffectiveTypes.Where(s =>
!s.IsInterface && typeof(IConfigurableOptions).IsAssignableFrom(s)))
{
services.AddConfigurableOptions(optionType);
}
}
}