2009-12-01 64 views
3

我不得不放棄使用PostSharp,因爲它不適用於混淆/合併的程序集。至少,我沒有看到任何方式來讓它工作(它崩潰在應用程序啓動,當程序集被混淆)
我需要攔截我的應用程序中的一些方法(調用特殊代碼而不是原始方法 - OnMethodInvocationAspect)
有什麼建議?任何PostSharp替代?

回答

4

PostSharp有所支持ILMerge。請參閱http://www.postsharp.org/blog/postsharp-and-ilmerge。但混淆程序集的問題。

  1. 由於方面在構建時序列化,所以如果方面類型被混淆了,它們就不能被反序列化。解決方案不是混淆任何可序列化的類型。另一種解決方案不是序列化方面(請參閱PostSharp 2.0中的AspectConfigurationAttribute.SerializerType,並使用序列化器MsilAspectSerializer)。

  2. 當方面應用於通用類型的泛型方法和方法時(這是因爲PostSharp使用了基於方法名稱的反射來解決CLR中的錯誤)存在問題。

-gael

1

面向方面編程僅僅是程序轉換的一個特例。 如果您可以使用工具應用程序轉換,則可以輕鬆執行AOP。

我們的DMS Software Reengineering Toolkit是一個程序轉換引擎 ,它可以處理許多真正的語言,包括C,C++,Java,COBOL甚至C#4.0。

有關更多詳細信息,請參閱Aspect Oriented Programming using DMS

3

NCop是用於通過郵政夏普啓發.NET平臺的複合縱橫框架

Sheep Aspect 是用於通過AspectJ的

啓發
+0

NCop似乎是一個反模式.NET平臺替代開源AOP工具。爲什麼要用IoC風格解析的具體類類型來裝飾接口?如果我有多個接口實現,那麼每次添加新的實現時,是否需要去更改接口定義? – Hemant 2016-10-13 02:02:02

+0

NCop是一個組合的概念庫,而不是IoC庫(儘管它封裝了IoC的概念)。您只需要用具體的類而不是角色接口來修飾組合類型。請參閱https://github.com/sagifogel/NCop/wiki/Mutliple-mixins – Sagi 2016-10-13 18:59:14