[英]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.