在“委托”中记录每个方法

时间:2016-04-05 22:06:58

标签: c# .net

我有一位代表:

private delegate void ActivitySteps(string inputFolder, string outputFolder);

在我班级的一个方法中,我注册了各种活动:

this.activitySteps = A;
this.activitySteps += B;

依旧......

最后我调用它:

this.activitySteps.Invoke(inputFolder, outputFolder);

现在我想添加日志记录,以便在调用委托时知道哪个事件即方法失败。 (A或B或其他)。 有没有办法可以做到这一点,以便我不必登录每个方法,并可以集中在委托中的日志记录。

1 个答案:

答案 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 );
    }
}