Любая альтернатива PostSharp? - PullRequest
4 голосов
/ 01 декабря 2009

Я должен отказаться от использования PostSharp, потому что он не будет работать с запутанными / объединенными сборками. По крайней мере, я не вижу способа заставить его работать (он вылетает при запуске приложения, когда сборки запутаны)
Мне нужно перехватить некоторые методы в моем приложении (вызвать специальный код вместо оригинальных методов - OnMethodInvocationAspect)
Любой совет?

Ответы [ 4 ]

4 голосов
/ 01 декабря 2009

PostSharp в некоторой степени поддерживает ILMerge. См. http://www.postsharp.org/blog/postsharp-and-ilmerge. Но есть проблемы с запутанными сборками.

  1. Поскольку аспекты сериализуются во время сборки, их нельзя десериализовать, если тип аспекта был запутан. Решение не состоит в том, чтобы запутывать любой сериализуемый тип. Другое решение заключается в том, чтобы не сериализовать аспекты (см. AspectConfigurationAttribute.SerializerType в PostSharp 2.0 и использовать сериализатор MsilAspectSerializer).

  2. Существуют проблемы, когда аспекты применяются к универсальным методам и методам универсальных типов (причина в том, что PostSharp использует отражение, в данном случае основанное на именах методов, для обхода ошибок в CLR).

-gael

3 голосов
/ 12 октября 2012

NCop - это составная структура для платформы .NET, вдохновленная Post Sharp

Sheep Aspect - это альтернативный инструмент с открытым исходным кодом AOP для платформы .NET, вдохновленный AspectJ

1 голос
/ 12 февраля 2010

Аспектно-ориентированное программирование - это всего лишь частный случай трансформации программы. Если вы можете применять программные преобразования с помощью инструмента, вы можете легко выполнить AOP.

Наш DMS Software Reengineering Toolkit - это механизм преобразования программ он поддерживает множество реальных языков, включая C, C ++, Java, COBOL и даже C # 4.0.

Подробнее см. Аспектно-ориентированное программирование с использованием DMS .

1 голос
/ 01 декабря 2009

Spring.NET имеет функции AOP, которые сплетаются во время выполнения, поэтому должны работать с обфусцированными сборками.

http://www.springframework.net/

Документация:

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

...