我有一位代表:
private delegate void ActivitySteps(string inputFolder, string outputFolder);
在我班级的一个方法中,我注册了各种活动:
this.activitySteps = A;
this.activitySteps += B;
依旧......
最后我调用它:
this.activitySteps.Invoke(inputFolder, outputFolder);
现在我想添加日志记录,以便在调用委托时知道哪个事件即方法失败。 (A或B或其他)。 有没有办法可以做到这一点,以便我不必登录每个方法,并可以集中在委托中的日志记录。
答案 0 :(得分:3)
您可以在调用委托时使用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 );
}
}