是否可以在C#中监听函数调用(即将C#函数调用视为事件)?

时间:2017-07-06 01:52:04

标签: c#

我想在我的应用程序中调用函数时记录。有没有办法可以监听被调用的函数并在这些事件上运行代码?

如果是这样,我在哪里开始研究如何做到这一点?

3 个答案:

答案 0 :(得分:3)

只需将您的日志记录直接插入到您想要的位置即可。

public class MyClass
{
    private ILogger _logger;

    public MyClass(ILogger logger)
    {
        _logger = logger;
    }

    public void DoSomething()
    {
        logger.Information("Something happened");
    }
}

这样您就可以自定义您班级的日志记录需求 - 尤其是当您使用SerilogSEQ一致时。

我怀疑面向方面的日志记录方法真的会让你获得一个非常有用的语义记录体验。

答案 1 :(得分:2)

如果您不想使用log分散方法,请考虑使用AOP(面向方面​​编程)库来执行此操作。

Here是一个说明这一点的博客。

答案 2 :(得分:0)

你想做什么?它是用于性能分析,还是因为你想在(例如)函数被调用x次时执行某些操作?

如果要进行性能分析,如果您使用的是Visual Studio,则IDE会有一些内置的分析功能。在" Debug"菜单,有"性能Profiler" (ALT + F2)。在您的应用程序上运行它可以为您提供有关所调用内容,多少时间,多少CPU负载等的详细信息。如果您生成"创建详细信息报告"一旦它运行了。

它有点难以解释,但如果您对在应用程序中花费了多少时间来执行各种功能感兴趣,那么它非常有用。