2015-08-26 42 views
0

我有一個Windows窗體應用程序與自定義事件日誌記錄,存儲在我的數據庫中的表中的一些數據。 我做些什麼來記錄這個事件,它是這樣的:在窗體窗體上完成後,從所選方法調用自定義事件日誌方法?

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

performLog(someParameters) 
{ 
    //save on the database 
} 

的問題是,我需要調用的方法performLog在我的Windows應用多種方法,所以我的問題是,如果有一些更好的辦法是做到這一點。 這樣的事情?

[PerformLog] 
methodA() 
{ 
    //some code 
} 

PerformLog使得performLog方法已了methodA結束後。 很明顯,我會在一些特殊情況下手動調用performLog方法。

達到此目的的最佳方法是什麼?

+0

看看「面向方面的編程」。 – David

回答

0

爲了能夠執行在我所有的應用程序的通用日誌記錄,我已經生成一個名爲事件記錄一個簡單的靜態類與我需要爲我記錄 和參數實現靜態方法 的SendMessage(...)靜態事件,LogNewEntry

靜態方法SendMessage使用給定數據啓動靜態事件。

這使我可以只執行一次LogNewEntry事件的事件處理程序(通常在WPF中的Winforms或App.xaml.cs的program.cs中)事件處理程序執行文本文件或數據庫上的日誌記錄或任​​何我需要並貫穿我的程序,每當我想記錄一些東西時,我只需撥打 EventLogger.SendMessage(...)傳遞所需的數據。

如果您認爲您想查看代碼,我可以發佈樣本以向您展示。

+0

我明白你在說什麼,但我的做法是讓事件代碼在方法代碼的「外部」,這就是爲什麼在我的例子中,我問如果像[[PerformLog]的東西可以作出 –

+0

我不理解你在方法代碼之外的意思,我已經看到了你的屬性,但是我知道他們用來給類的方法提供信息的屬性(最容易記得的是用於序列化的屬性)我不確定屬性是執行日誌操作的正確位置,但當然這只是因爲我從來沒有這樣的需求...... –

+0

我的意思是在某些情況下,我需要在一些中間添加這個'PerformLog'方法代碼,在最後的其他案例..我正在尋找一個很好的方式來打這些電話 –