1

C# では、linq 式を使用して特定のメソッドの呼び出しを生成しようとしています。メソッドのパラメーターの 1 つはデリゲートです。デリゲートとして渡したいメソッドの MethodInfo がありますが、デリゲートを作成するための linq 構文がわかりません。

これは少し不自然ですが、これが私がやろうとしていることを示していることを願っています:

[C#]
delegate void Example();

object instance = ...;
MethodInfo methodToCall = ...;
MethodInfo methodToReference = instance.GetType().GetMethod("Foo");
var lambda = Expression.Call(
    methodToCall,
    Expression.New(
      typeof(Example).GetConstructor(new [] { typeof(object), IntPtr }),
      Expression.Constant(instance),
      Expression.Constant(/* IntPtr from MethodInfo?? */)));

lambda.Compile()();

問題は、デリゲートのコンストラクターが IntPtr を要求していることです。それを取得する方法がわかりません! New() 式メソッドを使用するよりも、デリゲート オブジェクトを作成するより直接的な方法はありますか?

4

1 に答える 1

1
Example e = (Example)Delegate.CreateDelegate(typeof(Example), instance, methodToReference);
于 2011-01-08T17:53:18.550 に答える