Я решил переместить параметры из исходного места в классе 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"
}
}
}
Код: Выделить всё
public sealed class AnkiOptions
{
public const string AnkiOptionsConfigSection = "Anki";
public LocalPath LocalPath { get; set; }
}
Код: Выделить всё
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; }
}
Код: Выделить всё
services
.AddOptions()
.Bind(context.Configuration.GetSection(AnkiOptions.AnkiOptionsConfigSection))
.ValidateDataAnnotations();
Подробнее здесь: https://stackoverflow.com/questions/770 ... ions-class
Мобильная версия