首页 > 其他分享 >.net core 使用 IOption 依赖注入获取配置值

.net core 使用 IOption 依赖注入获取配置值

时间:2023-02-14 17:23:43浏览次数:41  
标签:core IOption Color class 配置 options net themeOptions public

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;
        }

 

标签:core,IOption,Color,class,配置,options,net,themeOptions,public
From: https://www.cnblogs.com/tomorrow0/p/17120246.html

相关文章

  • 【论文阅读】- 我对“AlexNet”的理解
    ......
  • Kubernetes:基于命令行终端UI的管理工具 K9s
    写在前面K9s是一个基于终端UI的K8S管理工具博文内容为k9s在windows、Linux以及docker安装Demo简单的热键使用。理解不足小伙伴帮忙指正我所渴求的,無非是......
  • .NET为什么推荐RabbitMQ消息队列作为首选开发工具
    支持.NetCore(2.0及以上)/.NetFramework(4.5及以上),可以部署在Docker,Windows,Linux,Mac。RabbitMQ作为一款主流的消息队列工具早已广受欢迎。相比于其它的MQ工具,Ra......
  • 报表开发工具FastReport .Net 如何在移动端生成Web报表应用?
    FastReport.Net是一款全功能的WindowsForms、ASP.NET和MVC报表分析解决方案,使用FastReport.NET可以创建独立于应用程序的.NET报表,同时FastReport.Net支持中文、英语等14......
  • 03-《AspNetCore》-Logger
    Logger视频讲解package说明Microsoft.Extensions.Logging.Abstractions:抽象包,一大堆的接口Microsoft.Extensions.Logging:提供一些基本的实现Microsoft.Extensions.Log......
  • 04-《AspNetCore》-Options
    Options视频讲解package说明ASP.NETCore中的选项模式|MicrosoftLearnMicrosoft.Extensions.Options:选项的核心包,扩展IServiceCollection接口,只支持内存配置。Mic......
  • 网络策略(NetworkPolicy)
    网络策略(NetworkPolicy)是一种关于Pod间及与其他网络端点间所允许的通信规则的规范。NetworkPolicy资源使用标签选择Pod,并定义选定Pod所允许的通信规则。说明:所......
  • netstat 最常用的几个用法
    查看本机的所有TCP/IP和UDP端口信息:netstat-atun查看详细的TCP/IP状态:netstat-s查看TCP/IP统计信息:netstat-i查看本机开放的端口:netstat-an查看详细的网......
  • 02-《AspNetCore》-配置
    Configurationpackage说明Microsoft.Extensions.Configuration.Abstractions:抽象包,一大堆的接口Microsoft.Extensions.Configuration.Binder:提供一大堆的扩展,比如类型转......
  • .NET为什么推荐它作为RabbitMQ消息队列的首选开发工具
    支持.NetCore(2.0及以上)/.NetFramework(4.5及以上),可以部署在Docker,Windows,Linux,Mac。RabbitMQ作为一款主流的消息队列工具早已广受欢迎。相比于其它的MQ工具,Rab......