2016-05-20 9 views
0

Я хочу, чтобы подобные функции, такие как PostSharp, были в моем коде, как метод onEntry и onExit, вызываемый атрибутами функции. Есть ли альтернативы одному и тому же?Есть ли какой-либо способ в .NET делать записи на основе атрибутов, отличные от PostSharp

Невозможно использовать PostSharp, поскольку он не является открытым исходным кодом, и я не могу использовать стороннюю библиотеку в своем проекте.

+2

Помимо этого, похоже на запрос инструмента - если есть очевидный инструмент для задания, и вы отказываетесь от использования этого инструмента, он помогает вам указать конкретные причины * для избежания этого инструмента, поскольку) те же причины могут также препятствовать другим «очевидным» (но неизвестным вам) подходам, и б) эти причины могут фактически основываться на недоразумении с вашей стороны. –

+0

Альтернативой Postsharp является использование пакета MethodDecorator Fody. Он работает так же, вы найдете его на github. Если вы не хотите использовать сторонний код, единственный вариант - написать его самостоятельно? –

+0

@PatrickAllwood может предоставить пример приложения о том, как использовать пакет MethodDecorator Fody. Я попытался запустить его, но метод onentry настраиваемого атрибута не выполняется. –

ответ

0

Я не знаю ничего такого мощного, как postsharp.

Если бесплатная версия PostSharp не отвечает вашим потребностям, есть и другие механизмы, чтобы смотреть на таких, как единство

https://msdn.microsoft.com/en-us/magazine/gg490353.aspx

Однако где PostSharp прозрачно единство АОП не является. Он работает только на единстве перехваченных интерфейсов (и перехватывает правильный путь). Кроме того, если я правильно помню, есть некоторые другие ограничения, как будто он играет хорошо с отслеживаемыми объектами из сущности, если я правильно помню.

Еще один бесплатный способ - вы можете написать расширения linq. Это не aop, но вы можете написать код, похожий на

Linqhelper.log().cache().execute(some method) 

Также не прозрачный, как postsharp, но он может удовлетворить ваши потребности.

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

  • Нет связанных вопросов^_^