Я пишу класс .NET, который должен разбирать командную строку процесса. Я не хочу иметь зависимость между методом Main() и этим классом. Как класс может получить доступ к командной строке?
Как получить доступ к параметрам командной строки за пределами Main в С#
Ответ 1
Вызов Environment.GetCommandLineArgs()
.
Ответ 2
Если вы используете .NET Compact Framework, метод Environment.GetCommandLineArgs() не реализован и System.Diagnostics.Process.GetCurrentProcess(). StartInfo.Arguments возвращает всегда пустую строку, поэтому вы должны использовать основную функцию и передавать аргументы другим классам.
Пример:
[MTAThread]
static void Main(String[] commandLineArguments)
{
CommandLineHelper.parse(commandLineArguments);
}
public static class CommandLineHelper
{
public static void parse(String[] commandLineArguments) {
// add your code here
}
}
Ответ 3
System.Diagnostics.Process.GetCurrentProcess().StartInfo.Arguments
Ответ 4
Создайте класс, содержащий ваши параметры приложения. В основном методе создайте экземпляр этого класса, инициализируйте его аргументами командной строки и передайте его тем классам, которые в нем нуждаются.
Кроме того, вы могли бы инициализировать класс в любое время после его создания с помощью метода CustomConfigClass.Create()
, который использует Environment.GetCommandLineArgs()
.
Первый вариант - это моя рекомендация, потому что он упрощает подготовку класса для модульного тестирования и переключение на альтернативный метод конфигурации позднее, не нарушая приложения из-за зависимости от командной строки.
Ответ 5
String [] myStr = Environment.GetCommandLineArgs();
всегда полезно завершить пример.