Я пишу класс .NET, который должен анализировать командную строку процесса. Я не хочу иметь зависимость между методом Main() и этим классом. Как класс может получить доступ к командной строке?Как получить доступ к параметрам командной строки за пределами Main в C#
ответ
Звоните Environment.GetCommandLineArgs()
.
System.Diagnostics.Process.GetCurrentProcess().StartInfo.Arguments
На самом деле это не работает. Кажется, всегда пусто. См. Http://stackoverflow.com/questions/344056/why-is-startinfo-processstartinfo-always-empty – Carsten
Создайте класс, который содержит параметры вашего приложения. В основном методе создайте экземпляр этого класса, инициализируйте его аргументами командной строки и передайте его тем классам, которые в нем нуждаются.
В качестве альтернативы, вы могли бы инициализировать класс в любое время после его создания с помощью метода CustomConfigClass.Create()
, который использует Environment.GetCommandLineArgs()
.
Первый вариант - это моя рекомендация, поскольку он упрощает подготовку класса к тестированию модулей и переключается на альтернативный метод конфигурации позднее, не нарушая приложения из-за зависимости от командной строки.
Первый вариант по-прежнему требует, чтобы основной метод знал о другом классе, поэтому он не решает мою проблему. Я использую контейнер IOC, поэтому я создам службу, которая предоставляет функциональность GetCommandLineArgs, и от этого зависит моя другая служба. Благодарю. –
Тем не менее, я пропустил свою точку зрения. Если вы используете IoC, тогда у вас нет службы для возврата аргументов командной строки, есть интерфейс службы, который возвращает конфигурацию, и реализует это с классом, который получает его из командной строки. Таким образом, вы можете заменить другим классом для модульного тестирования. –
String [] myStr = Environment.GetCommandLineArgs();
его всегда хорошо, чтобы завершить пример.
При использовании .NET Framework Compact, 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
}
}
Спасибо за Compact Framework. В моем случае я не хотел показывать основную форму, когда были указаны аргументы args, так что exe запускался в бесшумном режиме, но, как вы предположили, вы можете хранить эти аргументы в статическом классе, который будет доступен для всех форм заявление. Это должно работать в любых рамках. Для заинтересованных здесь был мой код. [MTAThread] static void Main (String [] cmd) { if (cmd.Length == 0) Application.Run (new frmMain()); else MessageBox.Show (cmd [0]); } – kuklei
- 1. Как получить доступ к параметрам командной строки?
- 2. C++ Доступ к аргументам командной строки за пределами основного?
- 3. Как получить доступ к параметрам маршрута за пределами вида
- 4. Доступ к вектору за пределами цикла C++
- 5. Параметры командной строки C - main()
- 6. Доступ к аргументам командной строки в C
- 7. Как получить доступ к пакету приложения командной строки в C
- 8. Как получить доступ к параметрам строки запроса в asp.net mvc?
- 9. Доступ к нитям за пределами основного()
- 10. Как получить доступ к Array за пределами закрытия?
- 11. Как получить доступ к аргументам командной строки Windows?
- 12. Как получить доступ к параметрам XML условно
- 13. Как получить доступ к параметрам анимации в Unity C#?
- 14. Доступ к структурным переменным за пределами функции в C
- 15. Как получить доступ к кодам за пределами IFRAME в GWT?
- 16. Как получить доступ к представлениям за пределами oncreateView() в фрагменте
- 17. Как получить доступ к модели в JSTL за пределами EL?
- 18. Как получить доступ к предоставленным пользователем параметрам командной строки в Tcl?
- 19. Как получить доступ к argv и параметрам вместе в php через аргументы командной строки
- 20. Как мне получить доступ к параметрам argv/командной строки в Dart?
- 21. Как получить доступ к шаблонам за пределами пакета?
- 22. Как получить доступ к переменной за пределами цикла?
- 23. Доступ к массиву за пределами функции в C++
- 24. Как инициализировать FileWriter за пределами метода main()
- 25. Как получить доступ к параметрам плагина в тесте? (Python Nose)
- 26. Доступ к объекту за пределами класса
- 27. Как получить доступ к вложенным параметрам
- 28. Как получить доступ к параметрам sys.argv Python?
- 29. JQuery плагины: как получить доступ к параметрам?
- 30. Как получить доступ к объекту за пределами «private void initialize»?
GetCommandLineArgs является [серьезно испорчено] (http://stackoverflow.com/questions/9287812/backslash-and-quote-in-command-line-arguments). Избегайте. Распространить слово. – Neolisk