【发布时间】:2010-10-19 01:30:21
【问题描述】:
我正在编写一个需要解析进程命令行的 .NET 类。我不想在 Main() 方法和那个类之间有依赖关系。类如何访问命令行?
【问题讨论】:
标签: .net command-line dependencies
我正在编写一个需要解析进程命令行的 .NET 类。我不想在 Main() 方法和那个类之间有依赖关系。类如何访问命令行?
【问题讨论】:
标签: .net command-line dependencies
致电Environment.GetCommandLineArgs()。
【讨论】:
如果你使用 .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
}
}
【讨论】:
创建一个包含应用程序选项的类。在 main 方法中创建该类的实例,使用命令行参数对其进行初始化,并将其传递给需要它的类。
或者,您可以在之后的任何时间通过使用Environment.GetCommandLineArgs() 的CustomConfigClass.Create() 方法创建该类来初始化该类。
第一个选项是我的建议,因为它使类更容易准备单元测试并在以后切换到替代配置方法,而不会由于对命令行的依赖而破坏应用程序。
【讨论】:
System.Diagnostics.Process.GetCurrentProcess().StartInfo.Arguments
【讨论】:
String[] myStr = Environment.GetCommandLineArgs();
完成这个例子总是好的。
【讨论】: