【发布时间】:2010-06-16 05:10:21
【问题描述】:
图书馆在
摘自
的用法http://blogs.msdn.com/ivo_manolov/archive/2008/12/17/9230331.aspx
第三种常用方法是从命令行参数形成强类型命令。这在命令行如下所示的情况下很常见:
some-exe COMMAND parameters-to-the-command
这种情况下的解析有点复杂:
- 为每个受支持的命令创建一个类,该类派生自 Command 抽象基类并实现预期的 Execute 方法。
-
将预期的命令与命令行参数一起传递给 CommandLineParser.ParseCommand - 该方法将返回一个可以是 Execute()-d 的强类型命令实例。
// 示例 #3: // 解析以下命令行的示例: // Test.exe 运行 /runId=10 /verbose // 在这种特殊情况下,我们在命令行上有一个实际命令(“run”),我们想要有效地反序列化并执行它。
public class RunCommand : Command { bool? Verbose { get; set; } int? RunId { get; set; } public override void Execute() { // Implement your "run" execution logic here. } } Command c = new RunCommand(); CommandLineParser.ParseArguments(c, args); c.Execute();
=============================
如果我们在解析参数之前实例化特定的类,我不明白,命令行参数“run”是第一个参数有什么意义。我认为这个想法是基于命令行参数实例化和执行命令/类(“run”参数变成实例 RunCommand 类,“walk”变成 WalkCommand 类等等)。可以用最新版本完成吗?此外,我从 codeplex 下载的内容不能按照上述方式工作,并且不接受没有斜杠的第一个参数。因此,如果使用反射,我必须将命令名称作为通常的参数传递,然后执行多步骤 - 确定类名称,通过反射实例化,然后才通过 ParseArguments 解析其他参数。
【问题讨论】:
标签: .net command-line-arguments