Обробка винятків
У методі OnEntry відбувається створення транзакції, метод OnException обробляє виключення, а метод OnSuccess викликається якщо операція не викинула виключення. Клас TransactionAttribute є аспектом (aspect) в термінології AOP, методи OnEntry, OnException, OnExit - порадами (advices). Залишилося тільки з'ясувати, як нам застосувати аспект. Для цього потрібно позначити метод DeleteOrder атрибутом [Transaction].
Кешування результатів виклику функції
Кешовані значення зберігаються в змінної класу _cache, яка оголошена як Dictionary
В змінної _methodName зберігається ім'я методу, воно стає відомим на етапі компіляції.
Приклад використання кешування виклику функцій виглядає наступним чином.
Валідація значень властивостей
Валідація при присвоєнні нового значення властивості ускладнює код присвоювання. Було б зручно робити це декларативно за допомогою атрибутів властивостей. У прикладі нижче властивість Customer.Name перевіряється за допомогою регулярного виразу. Перевірка здійснюється в момент присвоювання нового значення, тобто фактично в реалізації set.
Для того щоб цей код працював нам знадобиться створити клас RegExpValidatorAttribute, похідний від LocationInterceptionAspect. Даний аспект дозволяє вставляти свій код в реалізацію set або get для заданого властивості.