C# 在windows窗体上选定的方法完成后,是否从中调用自定义事件日志方法?

C# 在windows窗体上选定的方法完成后,是否从中调用自定义事件日志方法?,c#,winforms,logging,C#,Winforms,Logging,我有一个windows窗体应用程序,它带有一个自定义的事件日志,可以在数据库的表中存储一些数据。 我记录这些事件的方法如下: methodA() { //some code performLog(someParameters); } performLog(someParameters) { //save on the database } 问题是,我需要在windows应用程序中的许多方法上调用performLog方法,所以我的问题是,是否有更好的方法来实现这一点。 像

我有一个windows窗体应用程序,它带有一个自定义的事件日志,可以在数据库的表中存储一些数据。 我记录这些事件的方法如下:

methodA()
{
    //some code
    performLog(someParameters);
}

performLog(someParameters)
{
   //save on the database
}
问题是,我需要在windows应用程序中的许多方法上调用performLog方法,所以我的问题是,是否有更好的方法来实现这一点。 像这样的

[PerformLog]
methodA()
{
   //some code
}
其中,PerformLog在methodA完成后生成PerformLog方法。 当然,在某些特殊情况下,我会手动调用performLog方法


实现这一点的最佳方法是什么?

为了能够在所有应用程序中执行通用日志记录,我生成了一个名为EventLogger的简单静态类,它实现了一个静态方法 发送消息。。。使用日志记录所需的参数 和一个静态事件LogNewEntry

静态方法SendMessage使用给定数据启动静态事件

这允许我只实现LogNewEntry事件的事件处理程序一次,通常在program.cs for Winforms或App.xaml.cs for WPF中。事件处理程序在文本文件或数据库或我需要的任何地方以及在整个程序中执行日志记录,只要我想记录我刚刚调用的内容 EventLogger.SendMessage。。。传递所需的数据


如果您想查看代码,我可以发布一个示例来向您展示。

看看面向方面编程。我理解您的意思,但我的方法是制作一些将事件代码保留在方法代码之外的东西,这就是为什么在我的示例中,我会问[PerformLog]之类的东西我不明白你在方法代码之外的意思,我见过你的属性,但就我所知道的属性而言,它们用于向针对类执行的方法提供信息,最容易回忆的是那些用于序列化的属性,我不确定属性是否是执行日志操作的正确位置,当然,这只是因为我从来没有过这样的需要…我的意思是,在某些情况下,我需要在一些代码中间添加这个PrimeLoad方法,在最后的其他情况下…我一直在寻找一种很好的方法,让那些callssory这么晚才回答,也许你已经解决了,但是如果你想看到一个通用的记录器实现,你可以阅读它的英文版本:o