1

私は最近、次のようなコードを見ました (デリゲートを呼び出しています):

public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
    Debug.WriteLine(string.Format("Second watch: Method '{0}' on object '{1}' was invoked  and caught in order {2}.", input.MethodBase.Name, input.Target.GetType(),Order));
    return getNext()(input, getNext);

}

誰かがここで何が起こっているのかを説明して\またはリンクを投稿できますか. Invoke() が呼び出されていることは理解していますが、この場合、なぜ名前がオプションなのですか?

4

1 に答える 1

2

GetNextHandlerは、デリゲートを返すデリゲートのようです。

したがって、それを呼び出すとデリゲートが生成され、2つのパラメーターで呼び出されます。

 public delegate void FooDelegate( int n );
 public delegate FooDelegate GetFooDelegate();

 public void Bar( GetFooDelegate getFoo ) {

      getFoo()( 5 );

 }
于 2012-07-25T13:55:40.410 に答える