2008-12-22 56 views
1

當一個應用程序啓動時,我需要知道某些方法時,他們被解僱。如何使用屬性和AOP技術來做到這一點?捕獲記錄的事件目的

最簡單的方法是記錄在事件方法的時候像這樣:

private void Page_load() 
{ 
    DateTime dt = DateTime.Now; 
} 

和保存日期時間到數據庫中。但這絕對不是理想的,因爲這樣做會使該方法具有很多交叉功能,從而使維護工作更加困難。我正在考慮使用屬性來解決這個問題。 PostSharp似乎是一個很好的候選人,因爲它可以攔截方法調用並做任何你想要的預處理和後處理。但有一點顯而易見的是,沒有我編寫大量自定義代碼,它就無法處理事件。

是否有自然可以處理事件的任何框架?

回答

1

你並不需要有要記錄這樣每一個事件一個單獨的方法。

寫一個單一的方法做記錄:

public static void LogEventRaised(string event) 
{ 
    ... 
} 

然後使用匿名方法訂閱事件:

Load += delegate { LogEventRaised("Load") }; 

是的,它的當務之急,而不是聲明,並重復事件名稱 - 但它仍然非常緊湊。您可以附加處理程序使用反射所有事件,但是這很可能是矯枉過正。

1

Spring框架具有提供記錄載體上的面向方面的編程模塊。

2

Postsharp也許可以幫助你在這裏

+0

郵政銳是最簡單的.NET AOP框架之一。很高興喜歡它。 +1你 – Perpetualcoder 2008-12-22 17:20:09