[英]Keyvaluepair value issue appsettings
這是我的應用設置
{
"Messages": {
"ApiUrl": "demo",
"ApiKey": {
"Key": "key",
"Value": "1234"
}
}
}
Model Class:
public class CPSSettings
{
public Messages Messages { get; set; } = null!;
}
public class Messages
{
public string ApiUrl { get; set; } = null!;
public KeyValuePair<string?, string?> ApiKey{ get; set; }
}
我沒有得到_settings.Messages.ApiKey.Key
和_settings.Messages.ApiKey.Value
的值
但接收ApiUrl
的價值。 我對 KeyValuePair 沒有收到值有疑問
public testClient(IOptions<CPSSettings> options)
{
_settings = options.Value;
}
//...
if (_settings.Messages.ApiKey.Key is not null
&& _settings.Messages.ApiKey.Value is not null)
{
var s = _settings.Messages.ApiKey.Key; // am getting null vaues in both
var s1 = _settings.Messages.ApiKey.Value
}
KeyValuePair的成員是只讀的。 初始化結構后,框架無法設置這些值
我建議您使用您控制的另一種 object 類型。 具有可修改成員的一種。
例如
public class CPSSettings {
public Messages Messages { get; set; } = null!;
}
public class Messages {
public string ApiUrl { get; set; } = null!;
public ApiKey ApiKey{ get; set; } //<-- NOTE THE CHANGE
}
public class ApiKey {
public string? Key { get; set; }
public string? Value { get; set; }
}
這樣,在綁定設置時,框架可以初始化並正確設置成員的值
刪除CPSSettings
將簡化場景。 請參閱下文,了解如何使用Messages
通過.NET 中的選項模式訪問配置值:
Startup.ConfigureServices(...)
中注冊了Messages
(示例如下)。services.Configure<Messages>(Configuration.GetSection("Messages"));
IOptions<Messages>
作為testClient
構造函數參數(下面的示例)。public testClient(IOptions<Messages> options)
{
_settings = options.Value;
}
嘗試這個
var cpsSettingsSection = configuration.GetSection("Messages");
var cpsSettings = cpsSettingsSection.Get<Messages>();
var url = cpsSettings.ApiUrl;
var key = cpsSettings.ApiKey.Key.Dump();
var value = cpsSettings.ApiKey.Value.Dump();
//services.Configure<Messages>(cpsSettingsSection);
}
public class Messages
{
public string ApiUrl { get; set; }
public KeyValueString ApiKey {get; set;}
}
public class KeyValueString
{
public string Key { get; set; }
public string Value { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.