Asp. Net Основные пользовательские настройки конвертера JSON для IDictionary - PullRequest
0 голосов
/ 14 апреля 2020

Я хотел бы прочитать файл appsettings, но у меня проблема, когда одно свойство определено как IDictionary: значения преобразуются в виде строки.

Например, я определил в appsettings:

  "Queue":{ 
            "Name": "Test1",
            "Durable": true, 
            "Exclusive": false, 
            "AutoDelete": false, 
            "Arguments": {
              "x-expires": 10000,
              "x-overflow": "drop-head",
            }
 },

Класс привязки определен как

public class QueueSettings
    {
        public string Name { get; set; } = "";
        public bool Durable { get; set; } = true;
        public bool Exclusive { get; set; } = false;
        public bool AutoDelete { get; set; } = false;

        public IDictionary<string, object> Arguments{ get;  set; }
    }

, а привязка сделана как

QueueSettings queueSettings = new QueueSettings();
settings.GetSection("Queue").Bind(queueSettings);

В этом примере queueSettings.Arguments ["x-expires"] - это строка ("10000"), но я бы хотел, чтобы она была целочисленной. Как я могу установить JsonConverter в Net Набор основных служб? Я понимаю, что он не использует Ньютон Json, поэтому атрибут JsonConverter не помогает.

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете связать вручную, если хотите, как хотите.

services.Configure<QueueSettings>(configs =>
{
    configs.Name = configuration.GetSection("Queue").GetValue<string>("Name");
    configs.Arguments.Add("x-expires",  configuration.GetSection("Queue:Arguments").GetValue<int>("x-expires"));
});
...