Varメソッド入力のメソッド?

C#では:

入力パラメータが任意のメソッドであるメソッドを定義することは可能ですか?

私はより良い説明をさせてください:

署名付きのメソッドが欲しい

bool IsDoit(var method)
{
    try
    {
        method(...);
        return true;
    }
    catch{return false;}
}

これはメソッドを取得し、例外をスローするかどうかを示すブール値を返します。

一般的な代表者?ジェネリックアクション?一般的な機能ですか?

何か考えているのですか、不可能ですか?

ベストアンサー

何が
“…”ここに入るの?何らかの説明の代理人が欲しいと思っているようです。その代理人の署名は、呼び出すメソッドの署名と一致する必要があります。例えば:

static bool IsDoit(Action method)
{
    try
    {
        method();
        return true;
    }
    catch
    {
        return false;
    }
}

これにより、パラメータのないvoidメソッドのメソッドグループ変換が可能になります。

if (IsDoIt(SomeMethodWithNoParameters))
{
}

呼び出し側が他のパラメータを取るメソッドを呼び出そうとする場合、ラムダ式を使用して Action
にラップすることができます:

if (IsDoIt(() => MethodWithParameters("first", "second"))
{
}

個人的には、最初にこのデザインの知恵についてすべてしているわけではありません。例外をキャッチして、何も記録せずにそれらを飲み込むことは本当に悪い考えです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です