我正在寻找以下模式:
我有几种这样的方法:
1. private bool CheckIfStringExist(string lookupString, ref string errorMessage)
2. private bool NumbersAreEqual(int one, int two, ref string errorMessage)
...
(其中大约 15 个)。
我想要做的是按特定顺序运行它们,如果其中任何一个失败,则向用户输出错误消息。我还想向用户显示方法友好名称。
到目前为止,我想出了以下内容。
我创建了一个类来分别保存每个方法:
public class CheckingMethod
{
public string name {get; set;}
public Action method {get; set;}
public bool success {get; set;}
public CheckingMethod(string name, Action method)
{
this.name= name;
this.method = method;
this.success = false;
}
}
这允许我将所有方法存储在一个列表中......就像这样:
List<CheckingMethod> cms = new List<CheckingMethod>();
cms.Add(new CheckingMethod("Check if text exist", ()=>CheckIfStringExist(lookupString, ref errorMessage);
cms.Add(new CheckingMethod ("Check if numbers are equal", ()=>NumbersAreEqual(num1, num2, ref errorMessage);
然后我可以像这样一一运行它们:
foreach (CheckingMethod cm in cms)
{
cm.method()
}
不幸的是,Action 只返回 void 类型,所以我无法判断我的方法返回的是 false 还是 true。此外,如果先前返回 false,我需要禁止运行下一个方法(但并非总是如此,只是在某些情况下)。