В недавнем проекте мне порекомендовали попробовать AspectF.
Я принял близко к сердцу идею изложить все проблемы заранее и иметь код, который делает реальную работу, блаженно не подозревая обо всех сдержках и противовесах, которые произошли за ее пределами.
На самом деле я пошел немного дальше и добавил «проблему безопасности», которая требовала учетные данные, которые были получены в рамках запроса WCF. Он ушел в базу данных и сделал то, что должен был. Я выполнил очевидные проверки и проверку безопасности перед запуском фактического кода, который вернул бы необходимые данные.
Я нашел этот подход довольно освежающим изменением, и мне, конечно, понравилось, что у меня был источник AspectF для прохождения, когда я отлаживал и тестировал сервисные вызовы.
В офисе некоторые утверждали, что эти проблемы должны быть реализованы в качестве украшения для класса / метода. Но на самом деле не имеет значения, где вы его украшаете, в какой-то момент вы должны сказать, что хотите выполнить определенные действия / проверки. Мне нравится тот факт, что все это размещено на месте, а не как другой файл кода, не как какой-то файл конфигурации, и на этот раз, не добавляя еще одно украшение в класс / метод.
Я не говорю, что это действительно АОП - и я, конечно, думаю, что есть решения и ситуации, когда это действительно не лучший способ реализации ваших целей, но, учитывая, что это всего лишь пара К исходных файлов, которые делают для очень легкой реализации.
AspectF - это очень умный способ объединения делегатов.
Я не думаю, что каждый разработчик будет смотреть на код и говорить, как это замечательно, ведь в нашем офисе это смутило некоторых из нас! Но как только вы поймете, что происходит, это недорогой способ добиться многого из того, что можно сделать и другими подходами.