c# - 注入自定义配置的正确方法
问题描述
要解决的问题:有一个设置列表可以说:
{
"Kind1":
{"attr1":"val11"},
{"attr2":"val12"},
"Kind2":
{"attr1":"val21"},
{"attr2":"val22"},
}
而 .NET Core 2.1 中的一个消费者类(控制器),需要访问上述配置才能使用 Kind1 或 Kind2。
假设相应的类已经在 C# 中定义:
public class KindSetting
{
public string attr1{get;set;}
public string attr2{get;set;}
}
现在将配置注入消费者对象的最佳方法是什么。
有没有办法将IConfiguration
实例注入消费者对象并像这样使用它?:
KindSetting kindSetting =_configuration.GetValue<KindSetting>(kindSettingKey);
有没有更好的方法来满足上述要求?
解决方案
在 startup.cs 文件中,您可以在 ConfigureServices 方法中进行配置。下面的示例代码:
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
//Need to add following lines
services.Configure<KindSetting>(Configuration.GetSection("Kind1"));
}
添加到服务后,您可以在您的类中注入此配置,如下所示:
public class HomeController : Controller
{
private readonly IOptions<KindSetting> _KindSetting;
public HomeController(IOptions<KindSetting> KindSetting)
{
_KindSetting = KindSetting
}
public void myFunction()
{
var mysetting = _KindSetting.Value.attr1
}
}
推荐阅读
- java - AES 确定性加密
- php - 如何使用 Docker 在 Alpine Linux 上部署 Laravel Web 应用程序?
- javascript - javascript中的伪数组参数
- cpu-registers - 8085微处理器中算术运算的临时寄存器需要什么?
- flash - 将 Actionscript 1 转换为 Actionscript 3
- angular - 无法使用 Windows 身份验证发布到 asp.net core web api
- vue.js - nuxt hot-reload 在虚拟机中不起作用
- r - 使用 R 重新排序数据框和绘图
- python - Dask read_sql_table 不返回数据
- entity-framework - 使用 Fuelt API 使用 Code First 方法创建数据库