У меня есть консольное приложение C#, которое я собираюсь запустить из командной строки, и оно должно принимать некоторую информацию в качестве входных данных и сериализовать заданные значения в файл json, но классический args[] — это не то, что мне нужно.
Допустим, у меня есть 10 конкретных данных, которые я, возможно, захочу передать, например имя, модель, состояние, версия, номер и т. д., но не обязательно все, обязательным будет только имя. Так, например, я хотел бы иметь возможность успешно выполнить следующую команду или другую случайную комбинацию из 10 параметров. Пример:
myApp.exe --name paramName
myApp.exe --name paramName --version 5
myApp.exe --name paramName --model R7 --state on
Как я могу этого добиться?
Спасибо!
Отвечает ли это на ваш вопрос? Анализ аргументов/параметров командной строки в C#
Я бы предпочел предложить вам использовать какой-нибудь инструмент для этого.
Например, я обычно использую: https://github.com/commandlineparser/commandline
Этот инструмент позволяет вам записывать свои параметры в класс, который автоматически заполняется при загрузке программы.
Вот образец их git:
class Program
{
public class Options
{
[Option('v', "verbose", Required = false, HelpText = "Set output to verbose messages.")]
public bool Verbose { get; set; }
}
static void Main(string[] args)
{
Parser.Default.ParseArguments<Options>(args)
.WithParsed<Options>(o =>
{
if (o.Verbose)
{
Console.WriteLine($"Verbose output enabled. Current Arguments: -v {o.Verbose}");
Console.WriteLine("Quick Start Example! App is in Verbose mode!");
}
else
{
Console.WriteLine($"Current Arguments: -v {o.Verbose}");
Console.WriteLine("Quick Start Example!");
}
});
}
}
Что ж,
args[]
— это практически вся необходимая информация. Строки, разделенные пробелами, будут отдельными элементами массива args, поэтому вы можете просто просмотреть этот массив и проверить, является ли данная строка допустимым именем параметра. Если да, используйте следующий элемент в качестве значения.