我正在尝试从应用程序设置中获取一些选项,如下所示:
{
"Currency": {
"DefaultCode": "EUR",
"Url":"some url",
"Providers": {
"DefaultCode": "EUR",
"Url":"some url"
}
}
}
并为这些类型的选项提供这些类:
public class CurrencyConfiguration
{
public string DefaultCode { get; set;}
public string Url { get; set;}
public Dictionary<string, CurrencyProvider> Providers { get; set;}
}
public class CurrencyProvider
{
public string DefaultCode { get; set;}
public string Url { get; set;}
}
但是当我尝试时:
var configs = Configuration.GetSection("Currency").Get<CurrencyConfiguration>();
它为我提供了CurrencyProviders 的空值。其他字段填写正确吗?
json 中的
Providers
不是 Dictionary<string, CurrencyProvider>
。它只是一个对象。将 CurrencyConfiguration
类更改为此。
public class CurrencyConfiguration
{
public string DefaultCode { get; set;}
public string Url { get; set;}
public CurrencyProvider Providers { get; set;}
}
这将正确反序列化当前的 json。如果由于某些其他原因
CurrencyConfiguration
类需要是字典,则将类更改为此。
public class CurrencyConfiguration
{
public string DefaultCode { get; set;}
public string Url { get; set;}
public Dictionary<string, string> Providers { get; set;}
}
但这只是一个字典,因为键值对是字符串。