Всем привет!
Я ранее писал о своей библиотеке ArgsToConfig для C#. Напомню, что она позволяет преобразовать входящие в консольное приложение аргументы в пользовательский класс согласно заданным правилам через атрибуты. Всего 22 атрибута, покрывающие, пожалуй, все возможные случае (и даже больше). Из коробки поддерживает коллекции, кортежи и не базовые типы, вроде TimeStamp или пользовательские.
Вот один из примеров (все примеры можно посмотреть в Readme и тестах):
// Ожидаемая команда:
//myapp -v --output ./bin --format json
// Класс конфигурации:
class AppConfig
{
[ArgsHasParameter("-v|--verbose")]
public bool Verbose { get; set; }
[ArgsValueFor("-o|--output")]
[MaxLength(100)]
public string? OutputPath { get; set; }
[ArgsValueFor("--format")]
public string? Format { get; set; }
}
// Вызов в коде:
var (config, errors, position) = ArgumentsReader.ToObject<AppConfig>(args);
// Результат:
// config.Verbose → true
// config.OutputPath → "./bin" <- была проверена максимальная длина строки
// config.Format → "json"
У библиотеки большое обновление!
Теперь добавлена поддержка AOT. Для этого нужно установить вторую библиотеку, которая подключает эту возможность: Mansiper.ArgsToConfig.Aot.
Надеюсь, эти библиотеки станут вам по-настоящему полезны в ваших проектах.