C# .NET Core AppSettings.json-为派生项获取正确的类
我试图从appsettings.json中获取参数,它是一个派生类列表。 问题是,我不知道如何检索信息并为每个项目创建具有良好类的对象 My appsettings.json如下所示:C# .NET Core AppSettings.json-为派生项获取正确的类,c#,dependency-injection,asp.net-core-3.1,appsettings,C#,Dependency Injection,Asp.net Core 3.1,Appsettings,我试图从appsettings.json中获取参数,它是一个派生类列表。 问题是,我不知道如何检索信息并为每个项目创建具有良好类的对象 My appsettings.json如下所示: "DiagnosticSettings": { "Diagnostics": [ { "Type": "Connection", "Address": "xxx" },
"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"
}, [...]
]}
var a = Configuration.GetSection("DiagnosticSettings:Diagnostics");
我有一个基本类:
public class BaseDiagnosticConfig
{
public string Type { get; set; }
}
和派生类,如:
public class DNSDiagConfig : BaseDiagnosticConfig
{
public string DNSAddress { get; set; }
public string IPToCompare { get; set; }
}
我可以使用以下内容检索包含项目列表的提供程序:
"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"
}, [...]
]}
var a = Configuration.GetSection("DiagnosticSettings:Diagnostics");
我可以拥有基类列表(但这不是我想要的,因为我丢失了所有派生类信息):
var b=Configuration.GetSection(“DiagnosticsSettings:Diagnostics”).Get();
因此,有一种方法可以获取我的项目,即使我必须逐个检查我的应用设置列表中的所有项目,或者我只是做了一些不可能/错误的事情,这也是一个很好的类。我提供给你一个非常简单的例子,你可以根据你的要求使用
"MySettings": {
"Email": "abc@domain.com",
}
public class MySettingsModel
{
public string Email { get; set; }
}
登记
services.Configure<MySettingsModel>(Configuration.GetSection("MySettings"));
参考资料:你必须这样做。我提供给你一个非常简单的例子,你可以根据你的要求使用
"MySettings": {
"Email": "abc@domain.com",
}
public class MySettingsModel
{
public string Email { get; set; }
}
登记
services.Configure<MySettingsModel>(Configuration.GetSection("MySettings"));
引用:您在这里是在流中划水,有什么不使用一个名为Type的属性的类列表和一个属性字典呢?或者甚至只是一个带有属性字典的字典。在这里,你是在逆流而上,有什么不使用一个带有名为Type的属性的类列表和一个属性字典呢?或者甚至把它变成一本有属性字典的字典