我最近看到了一些像这样的代码(调用代理人):
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(),但为什么在这种情况下名称是可选的?
答案 0 :(得分:2)
GetNextHandler似乎是一个返回委托的委托。
因此调用它会产生一个委托,然后用两个参数调用它。
public delegate void FooDelegate( int n );
public delegate FooDelegate GetFooDelegate();
public void Bar( GetFooDelegate getFoo ) {
getFoo()( 5 );
}