c# - 在 "delegate"中记录每个方法

标签 c# .net

我有一个代表:

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/

相关文章:

c# - 选中/取消选中列表项中的复选框的 WPF 行为

.net - 托管/非托管 C++ 中的 wchar_t NUL

c# - DataTable 到 Dictionary<String,StringBuilder> 的转换

c# - 在多线程代码中读取 .NET Int32 时,我们需要锁定它吗?

c# - 从 C# 将原始 SOAP XML 直接发送到 WCF 服务

c# - 在一个类中声明太多方法会使它变大吗?

c# - 在教新开发人员时,我应该从单元测试开始吗?

c# - 数组多维通过给定数字获取索引

c# - 访问 Windows Media Player 播放速度控件

c# - 如何扩展控件模板(例如使用第三种颜色)