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 似乎是一个返回委托的委托。

因此调用它会产生一个委托,然后使用两个参数调用它。

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

 public void Bar( GetFooDelegate getFoo ) {

      getFoo()( 5 );

 }
于 2012-07-25T13:55:40.410 回答