【发布时间】:2017-05-25 16:32:04
【问题描述】:
我想在 C# 控制台应用程序(CLI)中编写一个框架,细节并不重要。 我不知道如何干净、快速地识别命令。 我尝试使用 switch-case:
public static void command_recognizing(string command) // random example
{
string[] tmp_array = command.Split(' ');
switch(tmp_array[0])
{
case("help"):
method_library.help(); // no need argument
break;
case("time"):
method_library.time(); // no need argument
break;
case("shutdown"):
method_library.shutdown(tmp_array); // need argument
break;
default:
Console.WriteLine("Error! {0} is not a known command!",tmp_array[0]);
break;
}
}
我也试过 if-else:
public static void command_recognizing(string command) // random example
{
string[] tmp_array = command.Split(' ');
if(command.Contains("help"))
{
method_library.help(); // no need argument
}
else if(command.Contains("time"))
{
method_library.time(); // no need argument
}
else if(command.Contains("shutdown"))
{
method_library.shutdown(tmp_array); // need argument
}
else
{
Console.WriteLine("Error! {0} is not a known command!",tmp_array[0]);
}
}
我尝试将命令存储在一个字符串数组中,还是一样,又长又丑。
还有其他方法可以让命令识别更短、更简洁、更容易修改吗? 请原谅我的英语。欢迎指正!
【问题讨论】:
-
尝试谷歌搜索“c# 如何编写解释器”
-
Nuget > CommandLineParser
-
Peter Bons,我花了 1 周时间尝试编写一个普通的解析器。失败后,我花了3天时间搜索了一个,当然一无所获。大卫坦西这无济于事。 Nuget也不起作用。非常感谢 NetMage。
标签: c# command command-line-interface