А какие-нибудь другие примеры использования PostSharp у вас есть?
У меня есть крайне положительный опыт использования PostSharp для кэширования, и я даже не могу с ходу придумать адекватной альтернативы для такого же простого и эффективного решения.
Я сужу по ряду примеров в разных проектах. Аспекты — это очень весело, но когда нужно все это поддерживать и эволюционировать архитектуру приложения, проявляется полное отсутствие гибкости и банальной очевидности того, что инъецируется в код.
Минусы действительно актуальны, по подобным же причинам в компании не используем PostSharp и прочие модификаторы IL, единственное что остается из АОП — использование для объектов, полученных через DI контейнер.
По поводу решарпера — очень рад, вы создаете документацию на API, а есть ли какие прогнозы на то, когда большая часть API будет покрыта документацией?
С одной стороны, да, это было проблемой — вроде как сейчас с этим получше, но насколько — не знаю. С другой стороны, есть в мире люди которые пишут на Scala где скорость компиляции в 10 раз (!!!) меньше чем у Java. И ничего, пишут как-то.
У меня к вам вопрос про один из аспектов АОП: Логи, вернее трэйсинг.
Представте кучу лазанья кода писавшегося 8 лет. Ни Sequence diagram, ни даже внятных комментов. Я хочу разобраться как оно там работает, но не в дебагерре.
С помощью PostSharp и SmartInspector можно лего сделать так что я получу лог по требуемым функциям \ классам вида:
Что-то типа трейса, который как-бы заменит Sequence diagram.
Мне интересны способы реализации такой штуки с минимальным изменениям существующего кода. Это можно сделать с PostSharp с изменениями в IL или с помощью Unity в runtime.
Буду благодарен совету по данному вопросу.
PS. Спасибо за демонстрацию опасностей PostSharp.
Второе — моё. Логирует через добавление атрибута [Log] в AssemblyInfo требуемого проекта. Ну и требуется руками создать инстанс логгера в статическом поле статического класса.
Изменения, имхо, минимальны :)
На мой взгляд логирование и трейсинг — это единственное достойное применение PostSharpа, потому что его минимализм — заразен, и часто приносит больше проблем чем пользы
Мой опыт с AOP и PostSharp