2009-12-01 9 views
3

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

ответ

4

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

  1. Поскольку аспекты сериализуются во время сборки, их нельзя десериализовать, если тип аспект был запутан. Решение заключается не в том, чтобы запутать любой сериализуемый тип. Другим решением является не сериализация аспектов (см. AspectConfigurationAttribute.SerializerType в PostSharp 2.0 и использование сериализатора 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, вдохновленный сообщение Sharp

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

+0

NCop кажется, анти-паттерна. Зачем вам оформлять интерфейс с конкретным типом класса для разрешения стиля IoC? Если у меня есть несколько реализаций интерфейса, мне нужно идти и изменять определение интерфейса каждый раз, когда я добавляю новую реализацию? – Hemant

+0

NCop - это концептуальная библиотека композиции, а не библиотека IoC (хотя она инкапсулирует концепцию IoC.) Вам нужно только украсить составной тип конкретными классами, а не интерфейсами ролей. См. Https://github.com/sagifogel/NCop/wiki/Mutliple-mixins. – Sagi

Смежные вопросы