[英].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.