6

タイプ「Func」のパラメーターを受け入れるメソッド(fyi、私はc#を使用しています)を持っています。次のように定義されているとしましょう:

MethodAcceptingFuncParam(Func<bool> thefunction);

次のように渡す関数を定義しました。

public bool DoStuff()
{
    return true;
}

これを次のように簡単に呼び出すことができます。

MethodAcceptingFuncParam(() =>  { return DoStuff(); });

これは正常に機能し、これまでのところ非常に良好です。

ここで、DoStuff() メソッドを渡す代わりに、リフレクションを介してこのメ​​ソッドを作成し、これを渡したいと思います。

Type containingType = Type.GetType("Namespace.ClassContainingDoStuff");
MethodInfo mi = containingType.GetMethod("DoStuff");

=>これは機能します。メソッド情報を正しく取得できます。

しかし、これは私が立ち往生しているところです:私は今、次のようなことをしたいと思います

MethodAcceptingFuncParam(() => { return mi.??? });

つまり、リフレクションで取得したメソッドを MethodAcceptingFuncParam メソッドの Func パラメータの値として渡したいということです。これを達成する方法についての手がかりはありますか?

4

2 に答える 2

11

Delegate.CreateDelegateタイプが適切であれば、を使用できます。

例えば:

var func = (Func<bool>) Delegate.CreateDelegate(typeof(Func<bool>), mi);
MethodAcceptingFuncParam(func);

関数が で何度も実行される場合、呼び出して結果をキャストするよりもはるかにMethodAcceptingFuncParam高速になることに注意してください。mi.Invoke

于 2009-12-11T08:54:22.133 に答える
1

呼び出しを使用します。

MethodAcceptingFuncParam(() => { return (bool)mi.Invoke(null, null); })
于 2009-12-11T09:04:23.707 に答える