[英].NET Core AppSettings.json - Get the right class for a derived item
我正在尝试从我的 appsettings.json 获取参数,这是派生类的列表。 问题是我不知道如何检索信息并使用良好的 class 为每个项目创建 object。
我的 appsettings.json 是这样的:
"DiagnosticSettings": {
"Diagnostics": [
{
"Type": "Connection",
"Address": "xxx"
},
{
"Type": "DNS",
"DNSAddress": "www.google.com",
"IPToCompare": "8.8.8.8"
},
{
"Type": "DNS",
"DNSAddress": "www.abc.com",
"IPToCompare": "x.x.x.x"
}, [...]
]}
我有一个基础 class:
public class BaseDiagnosticConfig
{
public string Type { get; set; }
}
和派生类,如:
public class DNSDiagConfig : BaseDiagnosticConfig
{
public string DNSAddress { get; set; }
public string IPToCompare { get; set; }
}
我可以使用以下内容检索包含项目列表的提供程序:
var a = Configuration.GetSection("DiagnosticSettings:Diagnostics");
而且我可以拥有基本 class 的列表(但这不是我想要的,因为我丢失了所有派生类信息):
var b = Configuration.GetSection("DiagnosticSettings:Diagnostics").Get<List<BaseDiagnosticConfig>>();
所以有一种方法可以让我的项目得到很好的 class 即使我必须逐个检查我的 appsettings 列表中的所有项目,或者我只是在做一些不可能/错误的事情?
你必须这样做。 我为您提供了一个非常简单的示例,您可以根据自己的要求使用。
"MySettings": {
"Email": "abc@domain.com",
}
public class MySettingsModel
{
public string Email { get; set; }
}
注册它
services.Configure<MySettingsModel>(Configuration.GetSection("MySettings"));
在要读取设置的 class 中声明。
private readonly IOptions<MySettingsModel> appSettings;
public StudentController(IOptions<MySettingsModel> app)
{
appSettings = app;
}
读取值
var value = appsettings.Value;
参考: https://www.c-sharpcorner.com/article/reading-values-from-appsettings-json-in-asp-net-core/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.