构建带有参数的控制台应用程序时,可以使用传递给Main(string[] args)
的参数.
在过go ,我只是对该数组进行索引/循环,并使用一些正则表达式来提取值.然而,当命令变得更复杂时,解析可能会变得非常难看.
所以我感兴趣的是:
- 你使用的图书馆
- 你使用的模式
假设这些命令始终遵循通用标准,例如answered here.
构建带有参数的控制台应用程序时,可以使用传递给Main(string[] args)
的参数.
在过go ,我只是对该数组进行索引/循环,并使用一些正则表达式来提取值.然而,当命令变得更复杂时,解析可能会变得非常难看.
所以我感兴趣的是:
假设这些命令始终遵循通用标准,例如answered here.
我强烈建议使用NDesk.Options(Documentation)和/或Mono.Options(相同的API,不同的名称空间).example from the documentation:
bool show_help = false;
List<string> names = new List<string> ();
int repeat = 1;
var p = new OptionSet () {
{ "n|name=", "the {NAME} of someone to greet.",
v => names.Add (v) },
{ "r|repeat=",
"the number of {TIMES} to repeat the greeting.\n" +
"this must be an integer.",
(int v) => repeat = v },
{ "v", "increase debug message verbosity",
v => { if (v != null) ++verbosity; } },
{ "h|help", "show this message and exit",
v => show_help = v != null },
};
List<string> extra;
try {
extra = p.Parse (args);
}
catch (OptionException e) {
Console.Write ("greet: ");
Console.WriteLine (e.Message);
Console.WriteLine ("Try `greet --help' for more information.");
return;
}