Как проверить вложенный класс параметров С#?C#

Место общения программистов C#
Ответить
Anonymous
 Как проверить вложенный класс параметров С#?

Сообщение Anonymous »

В качестве примера используется шаблон C# Options и ЭТОТ вопрос/ответ.
Я решил переместить параметры из исходного места в классе AnkiOptions во вложенный класс LocalPath. Я сделал это для того, чтобы разделить разные конфигурации на отдельные логические группы, а также иметь возможность получать один экземпляр Option от DI. У меня такое ощущение, что это увеличивает связь между разделами опций. Так что, если это противоречит шаблону параметров, замечания приветствуются.
При наличии следующего файла appsettings.json:

Код: Выделить всё

{
"Anki": {
"LocalPath": {
"LastDuplicateTimestampCheckFile": "./anki-db-files/last-duplicate-check",
"MainDbCollectionFile": "./anki-db-files/collection.anki2",
"WalFile": "./anki-db-files/collection.anki2-wal"
}
}
}
Наличие класса AnkiOptions:

Код: Выделить всё

public sealed class AnkiOptions
{
public const string AnkiOptionsConfigSection = "Anki";

public LocalPath LocalPath { get; set; }
}
И класс LocalPath:

Код: Выделить всё

using System.ComponentModel.DataAnnotations;

public class LocalPath
{
[Required(AllowEmptyStrings = false)]
public string LastDuplicateTimestampCheckFile { get; set; }

[Required(AllowEmptyStrings = false)]
public string MainDbCollectionFile { get; set; }

[Required(AllowEmptyStrings = false)]
public string WalFile { get; set; }
}
Когда параметры находились внутри класса AnkiOptions, я проверял их следующим образом:

Код: Выделить всё

services
.AddOptions()
.Bind(context.Configuration.GetSection(AnkiOptions.AnkiOptionsConfigSection))
.ValidateDataAnnotations();
Как проверить параметры в LocalPath? Должен ли я зарегистрировать LocalPath в качестве опции и запросить ее у DI в конструкторе класса AnkiOptions? Не уверен, что это сработает. Или есть какой-то другой способ проверить вложенные параметры?

Подробнее здесь: https://stackoverflow.com/questions/770 ... ions-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»