如何在C#中访问Main之外的命令行参数

时间:2009-04-12 23:26:06

标签: .net command-line dependencies

我正在编写一个需要解析进程命令行的.NET类。我不希望Main()方法和该类之间存在依赖关系。该类如何访问命令行?

5 个答案:

答案 0 :(得分:38)

致电Environment.GetCommandLineArgs()

答案 1 :(得分:4)

如果使用 .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 :(得分:2)

创建一个包含应用程序选项的类。在main方法中,创建该类的实例,使用命令行参数初始化它,并将其传递给需要它的类。

或者,您可以在此后的任何时间通过使用CustomConfigClass.Create()的{​​{1}}方法创建类来初始化类。

第一个选项是我的建议,因为它使类更容易为单元测试做准备,并在以后切换到另一种配置方法,而不会因为依赖命令行而破坏应用程序。

答案 3 :(得分:1)

System.Diagnostics.Process.GetCurrentProcess().StartInfo.Arguments

答案 4 :(得分:0)

String [] myStr = Environment.GetCommandLineArgs();

完成这个例子总是好的。