C# 如何在项目中包装每个功能?

C# 如何在项目中包装每个功能?,c#,.net,nlog,C#,.net,Nlog,我的WinForms项目中有很多函数,我正在使用NLog进行日志记录。我希望能够用nlogger.Info(“开始”)和nlogger.Info(“结束”)包装每个函数,这样我就可以知道实际异常发生的位置或代码当前运行的位置 是否有一个聪明的方法来做它,或者我需要在上面的所有函数中放置行吗?< /p> 如果你不想手动完成,你可以考虑面向方面的编程。 概括地说,它与在之前、之后或前后运行并提供“建议”的功能相匹配。因此,您可以轻松创建一个在所有函数中运行并添加到日志中的函数。从未在C#中使用过它,

我的WinForms项目中有很多函数,我正在使用NLog进行日志记录。我希望能够用
nlogger.Info(“开始”)
nlogger.Info(“结束”)
包装每个函数,这样我就可以知道实际异常发生的位置或代码当前运行的位置


是否有一个聪明的方法来做它,或者我需要在上面的所有函数中放置行吗?< /p> 如果你不想手动完成,你可以考虑面向方面的编程。 概括地说,它与在之前、之后或前后运行并提供“建议”的功能相匹配。因此,您可以轻松创建一个在所有函数中运行并添加到日志中的函数。从未在C#中使用过它,但我在Java中使用过它

您可以为.NET找到一个类。有关更多信息,请阅读:


我相信它可以为您做到这一点,并且可以应用于程序集级别(通过程序集级别属性)。但是,我会对潜在的性能影响保持谨慎。编写“方面”应该非常简单。

堆栈跟踪将告诉您异常发生的位置。。。只是说你是对的,但是有些异常没有完整的堆栈,有些异常根本没有堆栈。此外,如果某个函数在运行期间被调用了两次,您将不知道是哪个运行导致了异常,甚至您可以在没有源代码的外部程序集上执行此操作