.net core 使用 IOption 依赖注入获取配置值
1 appsettins 配置
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "Theme": { "Name": "Blue", "Color": "#0921DC" } }
2 配置节Themes对应的选项类
namespace WebApi_Test.Options { public class ThemeOptions { public string Name { get; set; } public string Color { get; set; } } }
3 ServiceCollection 扩展类
using WebApi_Test.Options; namespace Microsoft.Extensions.DependencyInjection { public static class ConfigurableOptionsServiceCollectionExtensions { /// <summary> /// 添加选项配置 /// </summary> /// <typeparam name="TOptions"></typeparam> /// <param name="services"></param> /// <param name="configuration"></param> /// <param name="configKey">选项类绑定的对应configuration的配置节key</param> /// <param name="action"></param> /// <returns></returns> public static IServiceCollection AddConfigurableOptions<TOptions>(this IServiceCollection services, IConfiguration configuration, string configKey, Action<TOptions> action) where TOptions : class { var optionsConfigure = services.AddOptions<TOptions>() .Bind(configuration.GetSection(configKey), options => { options.BindNonPublicProperties = true; }) .ValidateDataAnnotations(); if (action != null) optionsConfigure.PostConfigure(action); return services; } } }
4 添加注册测试选项类
builder.Services.AddConfigurableOptions<ThemeOptions>(builder.Configuration, "Theme", options => { options.Color = "new Color"; });
5 通过依赖注入测试获取配置
private ThemeOptions _themeOptions; public WeatherForecastController(IOptions<ThemeOptions> themeOptions) { _themeOptions = themeOptions.Value; }
分类:
.net core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理