[英]Detect if method called via delegate discards argument
我正在为控制台应用程序创建命令系统。 有些命令按原样使用(例如“ exitapp”),有些则需要参数(例如“ server start ip port ”)。 这是我的做法:
delegate void CommandHandlerMethod(params object[] args);
readonly Dictionary<string, CommandHandlerMethod> commands;
对于不需要参数的方法,我使用如下丢弃功能:
void ExitAppCommand(params object[] _) { ... }
void StartServerCommand(params object[] args)
{
// ip = args[0];
// port = args[1];
}
然后,我只遍历字典,我想在两种情况之间做出决定:
1.如果命令处理方法放弃了参数,则只需调用它
2.否则从输入字符串中删除参数并将其作为args传递
那么检测自变量丢弃的选项是什么?
UDP:这是我真正想要的“伪”:
foreach (KeyValuePair<string, CommandHandlerMethod> cmd in commands)
{
(input.StartsWith(cmd.Key))
{
if (cmd.Value. /*is declared to discard arg */)
cmd.Value();
else
// else cut args and pass them
cmd.Value(input.Substring(cmd.Key.Length+1).Split(' '));
break;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.