2011-12-21 68 views
2

因此,我在c#中有一個.net程序集。例如,我有兩個:沒有記錄器的二進制和源代碼。 我需要的是插入將被初始化特定記錄器的屬性。然後我需要在所有方法中引入記錄器調用者。第一種方式 - 手動編寫屬性及其調用。第二種方法 - 寫另一個類\方法(我想在同一個程序集中),它會自動完成。如何以編程方式將代碼插入程序集

可能嗎?有什麼建議麼?

我認爲這是可能的,因爲這是面試時的一個問題。但是沒有證據表明這是可能的,他們想聽到「不,手動做」。

+4

http://en.wikipedia.org/wiki/Aspect-oriented_programming –

回答

2

這就是我們在建築術語中稱之爲「橫切關注」的問題。日誌記錄是跨越應用程序許多方面的東西。

在Microsoft企業庫中有一些功能可以處理它。你想要的部分是Policy Injection庫。然後,您可以在配置中指定要匹配的方法(基於方法名稱/結構)和要調用的函數。通過這種方式,您可以將日誌記錄作爲您的應用程序的適當交叉關注點,而不是必須手動編碼到每種方法中的內容。

0

不改變源代碼並重新編譯,不可能改變方法的執行。你可以編寫一個封裝類來暴露所有的類和方法,它們會首先調用你的記錄器,然後再調用方法,但這不是他們要求的。

所以他們的問題的答案是1.是可能的,2.是不可能的,如果你將不得不添加日誌支持,你需要手動添加到每個方法。

+0

可以在不使用Microsoft企業庫的策略注入部分手動將其添加到每個方法的情況下執行此操作:http://msdn.microsoft .COM/EN-US /庫/ ff647463.aspx – 2011-12-21 13:15:03

相關問題