Лучший способ заниматься аспектно-ориентированным программированием в .NET - использовать хорошо известные методы проектирования. Например, применяя принципы SOLID, вы можете добиться гибкости и модульности, которые вам необходимы, чтобы добавить сквозные проблемы. Если у вас есть правильный дизайн, вы даже сможете применять большинство сквозных проблем без какой-либо структуры. Ошибочно думать, что ООП не подходит для АОП.
Вот несколько указателей:
- Не полагайтесь на конкретные примеры, но полагайтесь на абстракции.
- Не смешивайте сквозные задачи и бизнес-логику в одном классе.
- Добавление сквозных проблем путем обертывания классов бизнес-логикой в классы, которые реализуют эти проблемы ( декораторы ).
- Найдите общие артефакты в своем дизайне и смоделируйте их одинаково, желательно с использованием одного и того же типа абстракций. Взгляните, например, на это и это .
Когда у вас есть правильные абстракции, добавление новых сквозных проблем в систему - это просто вопрос написания нового класса декоратора и его обертывания вокруг правильных реализаций. Если абстракции являются общими, вы можете обернуть один декоратор вокруг большой группы классов (что и есть в АОП).
Хотя такие методы, как динамические прокси-серверы и переплетение кода, могут облегчить работу с плохо спроектированным приложением, альтернативы хорошему дизайну действительно нет. Рано или поздно ты обожжешься. Это не означает, что нельзя использовать динамическое создание прокси и переплетение кода. Но без правильного дизайна приложения даже эти методы будут мало полезны.