Как получить доступ к параметрам командной строки вне Main в C # - PullRequest
22 голосов
/ 13 апреля 2009

Я пишу класс .NET, который должен анализировать командную строку процесса. Я не хочу иметь зависимость между методом Main () и этим классом. Как класс может получить доступ к командной строке?

Ответы [ 5 ]

38 голосов
/ 13 апреля 2009

Звоните Environment.GetCommandLineArgs().

4 голосов
/ 12 мая 2014

Если вы используете .NET Compact Framework , метод Environment.GetCommandLineArgs () не реализован и System.Diagnostics.Process.GetCurrentProcess (). StartInfo.Arguments возвращает всегда пустую строку, поэтому Вы должны использовать функцию main и передавать аргументы другим классам.

Пример:

[MTAThread]
static void Main(String[] commandLineArguments)
{
  CommandLineHelper.parse(commandLineArguments);
}

public static class CommandLineHelper
{
  public static void parse(String[] commandLineArguments) {
    // add your code here
  }
}
2 голосов
/ 13 апреля 2009

Создайте класс, содержащий параметры вашего приложения. В методе main создайте экземпляр этого класса, инициализируйте его аргументами командной строки и передайте его нужным классам.

В качестве альтернативы, вы можете инициализировать класс в любое время после этого, создав его с помощью метода CustomConfigClass.Create(), который использует Environment.GetCommandLineArgs().

Первым вариантом была бы моя рекомендация, поскольку он облегчает подготовку класса к модульному тестированию и переходу на альтернативный метод конфигурации позднее, не нарушая приложения из-за зависимости от командной строки.

1 голос
/ 13 апреля 2009
System.Diagnostics.Process.GetCurrentProcess().StartInfo.Arguments
0 голосов
/ 11 июля 2013

String [] myStr = Environment.GetCommandLineArgs ();

это всегда хорошо, чтобы завершить пример.

...