ASP.NET选项类 TOptilons(针对appsettings.json自定义配置读取)
一、使用场景
当文件下载路径等等需要写死时,又不可以把路径代码写在业务代码(不好后期维护)时需要写在appsettings.json文件中,这样一来,后面业务代码中用到文件下载路径直接调用appsettings.json中的路径就可以了,
问题是怎么获取appsettings.json文件中的路径,可以直接在业务代码中注册IConfiguration 用configuration.GetSection("ApiSetting")的方式去获取,但是每个都这样获取的话个感觉代码还不够简洁,所以就用到了TOptions选项类
二、概述
本章讲的选项模式是对Configuration配置的功能扩展。 讲这篇时有个专用名词叫“选项类(TOptions)” 。该选项类作用是指:把选项类中的属性与配置来源中的键关联起来。
举个例,假设json文件有个Option1键,选项类中也有个叫Option1的属性名,经过选项配置,这样就能把json中的键的值映射到选项类属性值中。也可以理解在项目应用中,把一个json文件序列化到.net类。
三、使用实例
- 1、命名空间:
2、程序集
Microsoft.Extensions.Options.dll
3、创建注册TOptions实例类(名字和appsettings.json文件中的字节对应)
namespace MCRP.Core.API.Configuration { public class IISWenJianIP { public string Host { get; set; } } }
4、appsettings.json文件中创建key-value值实例
{ "IISWenJianIP": { "Host": "http://172.19.20.193:44522/" //172.19.20.193:44522 } }
5、Startup.cs配置文件的ConfigureServices中把注册TOptions将绑定到的配置实例。
public override void ConfigureServices(IServiceCollection services, IConfiguration configuration){ services.Configure<IISWenJianIP>(configuration.GetSection("IISWenJianIP")); }
6、业务代码中直接注入一下就可以用了
private string _iISHost;
public WenJianController(IOptions<IISWenJianIP> optionsWJ) {
_iISHost = optionsWJ.Value.Host;
}