首页 > 其他分享 >【转】NETCore下IConfiguration和IOptions的用法

【转】NETCore下IConfiguration和IOptions的用法

时间:2023-03-27 09:22:43浏览次数:54  
标签:test2 NETCore appsettings IConfiguration sample json IOptions

新建一个NETCore Web API项目,在Startup.cs里就会开始使用IConfiguration和IOptions了,我们来看看如何使用。
IConfiguration 是用来加载配置值的,可以加载内存键值对、JSON或XML配置文件,我们通常用来加载缺省的appsettings.json .

1. 注入IConfiguration

执行到Startup的时候,IConfiguration已经被注入到services了,不需要我们额外添加注入的代码,缺省就是读取appsettings.json文件,你可以理解在Startup.cs里有隐藏的注入代码类似如下:

var builder = new ConfigurationBuilder()
               .SetBasePath(env.ContentRootPath)
               .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
               .AddEnvironmentVariables();
Configuration = builder.Build();
services.AddSingleton<IConfiguration>(Configuration);

2. 使用IConfiguration

我们先设置一下appsettings.json

{
  "test1":"v1",
  "test2":{
    "key1":"v2",
    "key2":"v3",
    "key3":4,
    "key4":true
  }
}

在Controller里直接在构造函数里传入IConfiguration

 

 

可以看到获取appsettings.json里的值很简单,如果是对象值只需要加一个冒号。
更好的方式去获取一个对象是用IOptions,我们接下来看看。

3. 注入IOptions

先定义一个OptionSample类需要实现IOptions接口:

 

然后,注入代码很简单

services.Configure<OptionSample>(Configuration.GetSection("test2"));

这句话等同于以下代码

OptionSample sample = new OptionSample();
sample.key1 = Configration["test2:key1"];
sample.key2 = Configration["test2:key2"];
sample.key3 = Configration["test2:key3"];
sample.key4 = Configration["test2:key4"];
services.AddSingle<IOptions<OptionSample>>(sample);

4. 使用IOptions

这个同样在构造函数里传参数

 

 大家可以看到在NETCore中无处不在的依赖注入。源码参考Github

 

转 https://blog.csdn.net/u010690818/article/details/106036956/

 

标签:test2,NETCore,appsettings,IConfiguration,sample,json,IOptions
From: https://www.cnblogs.com/wl-blog/p/17260365.html

相关文章

  • 在aspnetcore中实现AOP的方式
    aaspnetcore开发框架中实现aop不仅仅在业务上,在代码的优雅简洁和架构的稳定上都有着至关重要。下面介绍三种用过的。 第一种使用DispatchProxy实现通过使用System.Re......
  • aspnetcore中aop的实现
    aaspnetcore开发框架中实现aop不仅仅在业务上,在代码的优雅简洁和架构的稳定上都有着至关重要。下面介绍三种用过的。 第一种通过System.Reflection的DispatchProxy类来......
  • Centos安装部署netcore 包含Nginx,Supervisor等
    安装.NETCoreSDK安装libicu依赖yuminstalllibunwindlibicu注册dotnet的repository您需要注册Microsoft签名密钥并添加Microsoft产品提要sudorpm-Uvhhttps://packag......
  • .netcore 在Linux(Centos)使用Docker方式部署
    运行环境假设你已经安装好了.netcore运行环境,未配置可以看这篇​​[linux(centos)搭建.netcore运行环境]​​centos:7.2cpu:1核2G内存1M带宽docker:18.06.1-ce安装docke......
  • netcore强制使用https,把所有的HTTP请求转换为HTTPS
    使用HTTPS根据官方文档(​​https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.1&tabs=visual-studio#require-https​​),它建议A......
  • netcore读取、写入文件内容
    读取文件内容使用System.IO.StreamReader文档地址​​System.IO.StreamReader​​.FileStreamfileStream=newFileStream("file.txt",FileMode.Open);using(StreamRe......
  • aspnetcore mvc 5.0 cshtml修改后进行 实时编译razor
    ASP.NETCore中的Razor文件编译 Razor使用SDK在生成和发布时Razor编译扩展名.cshtml为的文件。可以选择通过配置项目来启用运行时编译。1、安装Microsoft.Asp......
  • 如何查看.netCore源码
    1.ILSpy反编译工具=》选项  vs中,扩展安装ILSpy,重启vs。右键“用ILSpy打开源码”  2.网页在线查看 SourceBrowser(dot.net)LinkedList.cs(dot.net) ......
  • 极简实用的Asp.NetCore模块化框架决定免费开源了
    举报简介: 在开发这个框架之前,前前后后看过好几款模块化的框架,最后在一段时间内对ABPVNext痛下狠心,研究一段时间后,不得不说ABPVNext的代码层面很规范,也都是一些最佳实......
  • .netCore Swagger 发布到IIS 问题
    1.安装DotNetCore.2.0.8-WindowsHosting  2.https://dotnet.microsoft.com/en-us/download/dotnet/6.0  安装aspnetcore-runtime-6.0.11-win-x643.IIS应用池安装......