配置部分内的字典始终为 null 或为空

问题描述 投票:0回答:1

我正在尝试从应用程序设置中获取一些选项,如下所示:

{
    "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 的空值。其他字段填写正确吗?

c# asp.net .net appsettings
1个回答
0
投票

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;}
}

但这只是一个字典,因为键值对是字符串。

© www.soinside.com 2019 - 2024. All rights reserved.