zoukankan      html  css  js  c++  java
  • .NET Core 中 IOptions 有什么用

    我只发现IOptions的一个用处——方便了在.NET Core应用程序中使用强类型配置。

    如果没有IOptions,使用强类型配置需要自己解决下面2个问题:

    1)将配置文件(比如appsettings.json)中的配置反序列化至配置类的实例中

    2)注入配置类的单例

    如果有了IOptions,可以通过  Configure<TOptions>(IConfiguration config)  或  Configure<TOptions>(Action<TOptions> configureOptions) 扩展方法一次搞定上面2个问题。

    下面看一个例子,我们在将阿里大于的.NET客户端TopSdk迁移至.NET Core时,想实现通过appsettings.json对客户端进行配置。

    {
      "topClient": {
        "serverUrl": "",
        "appKey": "",
        "appSecret":  ""
      }
    }

    为此定义了一个配置类TopClientOptions:

    public class TopClientOptions
    {
        public string ServerUrl { get; set; }
        public string AppKey { get; set; }
        public string AppSecret { get; set; }
    }

    然后通过在Startup的ConfigureServices()添加下面的代码,就可以将appsettings.json中的配置绑定到TopClientOptions的实例,并完成依赖注入。

    services.AddOptions();
    services.Configure<TopClientOptions>(Configuration.GetSection("topClient"));

    (注:需要安装NuGet包 Microsoft.Extensions.Options.ConfigurationExtensions )

    在需要读取TopClientOptions中配置的地方只需通过构造函数注入即可:

    public class DefaultTopClient : ITopClient
    {
        public DefaultTopClient(IOptions<TopClientOptions> options)
        {
        }
    } 

    相关随笔:.NET Core类库项目中如何读取appsettings.json中的配置

  • 相关阅读:
    Python:Pandas的基本操作和使用
    奇技淫巧:绝佳笔记篇-wolai
    Scala:(五) 类、对象、继承、模式匹配和样例类
    tree2List
    java mybatis多层collection嵌套查询
    linux 查看目录下各个文件的大小
    Redisson使用手册
    hutool 定时任务 TimedCache
    清理Docker占用的磁盘空间
    java线程池
  • 原文地址:https://www.cnblogs.com/dudu/p/6740966.html
Copyright © 2011-2022 走看看