2012-03-04 30 views
1

讓我們來看看細節。使用AOP和代理登錄winform應用程序

例如我有一個類和邏輯命名爲ImportAction。這門課有一些公開和私人的方法。我調用了一些方法。在這些方法中,我實例化其他類(請跳過DI註釋,它是遺留的:)並調用它們的某些方法(等等)。此外,我在這兩個類中都有幾個私有字段,還有一些從調用中返回值。

我需要記錄所有參與者的具體選擇。

我讀了AOP並想用Unity攔截來捕獲調用。但我不知道是否有可能獲得方法/類的私有狀態。

我知道我的ImportAction執行過程中需要所有使用的類型的代理。不但我需要他們的私人領域和返回值。

這是不錯的方法來實現這個?也許這對團結代理是不可能的? 歡迎任何想法。

+0

我不知道你可以爲私人成員做些什麼,但是如果你想在方法調用之前/之後和通過任何參數之前記錄,你可以使用Unity。 – Mario 2012-03-06 15:33:53

回答

0

Unity不會直接給你任何訪問私人狀態的能力(除了反思)。

但是,還有更多的問題。嚴格地說,如果您使用new直接創建課程,則不能使用代理。您可以手動更改代碼來創建代理,但如果您這樣做,爲什麼不直接記錄所需的信息呢?特別是考慮到對私人國家的需求似乎意味着記錄與這些類別緊密結合。

但是,如果特別希望使用AOP類分開記錄代碼,則應該仍然能夠做到這一點使用一些備選AOP辦法與代碼/ IL重寫,例如AfterthoughtPostSharp或人工處理與NRefactory或類似的東西。

+0

我不想在整個代碼中編寫類似'_logger.log(「message」,typeOfMessage)'的東西。這就是爲什麼我需要更優雅的解決方案。 – 2012-03-05 07:49:14