0

さまざまなメソッドをFuncパラメーターとして受け入れるメソッドを作成しようとしています。s 引数の
定義に小さな問題があります。Func次のようなものを呼び出す必要があるとします。

public static void SomeTestMethod(int number,string str)
{
    Check(MethodOne(number,str));
}

そしてチェックのために私はこれを持っています:

public static int Check(Func<int,string,int> method)
{
         // some conditions 
      method(where should i get the arguments ?);
}

今私の質問は、必要な引数をどのように設定すればよいですか? TestMethod で指定した署名を使用して Check を呼び出す必要があるため、Check に個別の引数を指定するのはエレガントではないと感じています。
持ちたくない

Check(MethodOne,arg1,arg2,etc));  

可能であれば、代わりにこの署名を提供する必要があります:

Check(MethodOne(number,str));
4

2 に答える 2

2

私はあなたがこれを望んでいると思います:

public static void SomeTestMethod(int number,string str)
{
    Check( () => MethodOne(number,str));
}

public static int Check(Func<int> method)
{
         // some conditions 
      return method();
}
于 2014-10-21T06:53:51.210 に答える
1
public static void Check<TReturnValue>(
                       Func<int, string, TReturnValue> method, 
                       int arg1, 
                       string arg2)
{
    method(arg1, arg2);
}

呼び出し:

public static SomeClass MethodOne(int p1, string p2)
{
   // some body
}

Check(MethodOne, 20, "MyStr");

戻り値の型がありません (最後のジェネリック パラメーターは戻り値の型を意味します)。Func何も返したくない場合は、次を使用してActionください。

public static void Check(
                       Action<int, string> method, 
                       int arg1, 
                       string arg2)
{
    method(arg1, arg2);
}
于 2014-10-21T06:38:27.907 に答える