我有一个代表:
private delegate void ActivitySteps(string inputFolder, string outputFolder);
在我类(class)的一个方法中,我向它注册了各种事件:
this.activitySteps = A;
this.activitySteps += B;
等等……
最后我调用它:
this.activitySteps.Invoke(inputFolder, outputFolder);
现在我想添加日志记录,以便我知道调用委托(delegate)时哪个事件(即方法失败)。 (A 或 B 或其他)。 有没有一种方法可以做到这一点,这样我就不必在每个方法中登录,并且可以将日志记录集中在委托(delegate)中。
最佳答案
您可以在调用委托(delegate)时使用 GetInvocationList()
:
foreach( ActivitySteps del in this.activitySteps.GetInvocationList() )
{
try
{
del.Invoke( inputFolder, outputFolder );
}
catch( Exception ex )
{
Console.WriteLine( "{0} threw {1}", del.Method.Name, ex );
}
}
关于c# - 在 "delegate"中记录每个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437927/