簡體   English   中英

.NET Core AppSettings.json - 為派生項目獲取正確的 class

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM