我正在.NET Core 5 中创建一个控制台应用程序,它知道一组命令。应用程序的名称是Strict.exe
。这些是我需要解析的命令。
strict.exe load mytext
strict.exe read
strict.exe explode
strict.exe stich 3 4 5 6
strict.exe case -pascal
strict.exe join -l "pqr"
strict.exe echo "Making C# array"
strict.exe implode -d ","
strict.exe join -r "abc"
要解析我使用 CommandLineParser 库的命令 - https://github.com/commandlineparser/commandline。现在的问题是我的一些命令是上下文感知的。就像第一个命令load mytext
因此,如果文本文件在同一目录中,则可以
load mytext
如果它在不同的目录中,命令可以是
load "c:\Sample Data\mytext.txt"
另一个问题是 Stich 命令。它可以在“stich”之后接受任意数量的任意值。喜欢
stich 1
stich 1 2
stich 1 2 3
另一种情况是命令验证。如果用户正在使用join
命令。它应该后跟一个标志,例如 ' -l
' 或 ' -r
' 然后是string
. 我该如何执行它。
我能够使用该库解析普通命令,但我无法将它用于我的用例。如何创建 Options 类来应对上述需求。
我当前的实现只能解析第一个命令
public class Options
{
[Option("load", Required = false, HelpText = "Loads a text file")]
public bool load { get; set; }
}