我有一个可以有很多参数的程序(我们有超过+30个不同的选项).
例:
myProgram.exe -t alpha 1 -prod 1 2 -sleep 200
这是3个命令(最后来自命令模式对象),每个命令都包含一些参数.在代码中我们解析所有命令(以 - 开头)并获取参数的字符串列表(拆分所有空格).所以实际上,我们有:string - >每个命令的String参数集合.
目前,我们使用字符串比较,我们可以完成所有工作(实例具体命令并返回ICommand接口).问题是我们每次都需要做很多IF以获得良好的命令.
你是否有一些模式可用于从EXE中提取所有参数而不使用大量IF?
代码在C#中,但我认为逻辑也可以是任何其他语言......
(好吧,因为这是用Python标记的):
我们使用Python的optparse模块来实现此目的.它有比许多ifs更友好的API.
创建一个哈希表,该表存储用于处理每个参数的函数指针(在C#中为委托),使用参数文本进行键控.然后,您只需在循环中浏览命令行,并根据哈希表查找的内容调用委托.
C#的有用选项库:NDesk.Options