任何PostSharp替代品?

时间:2009-12-01 14:57:40

标签: .net aspects

我不得不放弃使用PostSharp,因为它不适用于混淆/合并的程序集。至少,我没有看到任何方法让它工作(它在应用程序启动时崩溃,当程序集被混淆时)
我需要拦截我的应用程序中的一些方法(调用特殊代码而不是原始方法 - OnMethodInvocationAspect)
有什么建议吗?

4 个答案:

答案 0 :(得分:4)

PostSharp在某种程度上支持ILMerge。见http://www.postsharp.org/blog/postsharp-and-ilmerge。但是 模糊了程序集的问题。

  1. 由于方面是在构建时序列化的,因此如果方面类型已被混淆,则无法对它们进行反序列化。解决方案不是混淆任何可序列化类型。另一种解决方案不是序列化方面(请参阅PostSharp 2.0中的AspectConfigurationAttribute.SerializerType,并使用序列化器MsilAspectSerializer)。

  2. 当方面应用于泛型类型的泛型方法和方法时会出现问题(原因是PostSharp在这种情况下使用基于方法名称的反射来解决CLR中的错误。)

  3. -gael

答案 1 :(得分:3)

NCop是一个基于Post Sharp的绿色.NET平台的复合方面框架 Sheep Aspect是受AspectJ启发的.NET平台的另一种开源AOP工具

答案 2 :(得分:1)

Spring.NET具有在运行时编译的AOP功能,因此应该使用模糊的程序集。

http://www.springframework.net/

文档:

http://www.springframework.net/doc-latest/reference/html/aop.html

答案 3 :(得分:1)

面向方面的编程只是程序转换的一个特例。 如果您可以使用工具应用程序转换,则可以轻松执行AOP。

我们的DMS软件再造工具包是一个程序转换引擎 它处理许多真正的语言,包括C,C ++,Java,COBOL甚至C#4.0。

有关详细信息,请参阅Aspect Oriented Programming using DMS