私は次のパターンを探しています:
私はこのようないくつかのメソッドを持っています:
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);
次に、次のように1つずつ実行できます。
foreach (CheckingMethod cm in cms)
{
cm.method()
}
残念ながら、Actionはvoid型のみを返すため、メソッドがfalseまたはtrueを返したかどうかを判断する方法がありません。また、前にfalseが返された場合は、次のメソッドの実行を禁止する必要があります(ただし、常にではありませんが、場合によっては)。