回答
.net中的大多數依賴注入框架都具有使用AOP技術的能力,我個人更喜歡Ninject和Interceptor插件,因爲它易於使用,並且不需要任何對第三方屬性或任何事物的類污染。
話雖這麼說Spring.net,溫莎城堡和許多其他DI框架支持相同的原理略有不同的語法和方法,有些是XML驅動的一些是C#驅動,你可以有編譯時的安全性。
一件事想的是,大多數DI框架通過類代理做到這一點,所以他們需要你的方法是虛擬的,然後在運行時,它的代理類的方法,你可以在這一點上攔截。還有其他一些方法,比如PostSharp所做的IL編織,它可以比代理更快,儘管我沒有任何測量來支持它。
沒有看到獎金問題位,對我來說,我會說它不是一個明確的答案,因爲它取決於你如何使用它,因爲通常你使用AOP作爲一種方式來分隔你的非功能性問題作爲日誌記錄,事務可能從源代碼中進行驗證,因此您可以從外部添加此邏輯,因此理想情況下,您的源代碼不知道AOP發生了什麼(儘管如果您使用的是某些第三方屬性,情況並非總是如此將您的源代碼連接到AOP框架)。
由於代碼合同可以寫在網上與現有的類或通過屬性鉤住或相信可以在運行時被完全注入,那麼像伐木關注你可以把他們都變成你的類,但使用時AOP的方法你不會。所以對於我來說Code Contracts只是一個強制執行的工具,你可以可以以AOP方式使用它,或者你可以將它嵌入到你的代碼中。
作爲替代方案,你也可以使用Spring AOP
鏈接:http://static.springsource.org/spring/docs/2.0.x/reference/aop.html
諾塔:我更喜歡統一
PostSharp是另一種選擇。容易入門,儘管它不再可以完全自由地使用。
我不知道,如果微軟仍然在積極推動該項目Unity。也許其他人可以對此有所瞭解。
Code Contracts不是(一種類型的)面向方面的編程。
- 1. 微軟針對.NET的GWT解決方案是什麼?
- 2. 我想要AOP的.net解決方案?
- 3. 微博SEO解決方案?
- 4. 我的緩存解決方案解決方案是否安全?
- 5. Android - 尋找一個AOP解決方案
- 6. Silverlight有AOP解決方案嗎?
- 7. 如何在C#.NET中使獨立的軟件解決方案
- 8. 微軟團隊基礎解決方案控制
- 9. 微小的私有云解決方案
- 10. 不是真正的解決方案
- 11. 哪個解決方案是正確的?
- 12. BizTalk是正確的解決方案嗎?
- 13. 從C#解決方案調試C++解決方案
- 14. 是否存在用於記錄代碼的軟件,而不是解決方案?
- 15. OpenAM + Winstone是否有解決方案?
- 16. 面向方面編程(AOP)的C#解決方案(.NET)和它們的功能
- 17. C++;對我而言,這是否是解決方案?
- 18. 安裝Nuget軟件包解決方案
- 19. 軟件設計解決方案 - 遊戲
- 20. 備份軟件解決方案問題
- 21. C#MVC解決方案?
- 22. 死鎖c#解決方案
- 23. JSON解析正確的解決方案
- 24. C++程序 - 不確定是否我提供了正確的解決方案
- 25. C# - 將多項目解決方案轉換爲1-1項目解決方案
- 26. Maven2中的Visual Studio C++解決方案
- 27. c#解決方案中的多個app.config
- 28. 在您的解決方案C#
- 29. 爲什麼NuGet將軟件包放在「解決方案級別」?
- 30. Visual Studio:單一解決方案還是很多解決方案?
您還可能有興趣在此相關的問題:內置AOP在C#中 - 它是在路上?](http://stackoverflow.com/questions/833729/built-in-aop-in-c -sharp-是,它上聯程) – R0MANARMY