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

Вид: 21364|Ответ: 1

[Источник] .net/C# использует атрибуты для реализации простого AOP

[Скопировать ссылку]
Опубликовано 18.04.2017 14:54:11 | | |

Начнём с простого кода:



Допустим, это веб-программа: мы хотим сначала проверить сессию, затем проверить права доступа, начать транзакцию, записать журнал, затем выполнить саму операцию и, наконец, записать журнал. Очевидно, что мы не можем записывать все вызовы методов для вышеуказанных операций в DoSomething(), поэтому код превратится в большую ерунду, так что что нам делать?

Существует множество способов реализации, например, с помощью фреймворков, таких как spring, но в реальных проектах нельзя просто ввести фреймворк, и часто приходится самостоятельно писать некоторые механизмы.

Здесь я думаю о фильтре в MVC: если поставить тег атрибута на контроллер или действие, можно делать другие вещи до и после выполнения метода. Давайте просто смоделируем реализацию фильтра.

Прежде всего, оригинальный метод преобразуется в элегантный способ маркировки признаков:




При тегам признаков должны быть классы, соответствующие тегам особенностей, а также реализации AOP, которые могут быть независимо содержаться в файле или ассемблере.

Во-первых, метка, прикреплённая к методу, реализованная как пустая:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
публично запечатанный класс MyInterceptorMethodAttribute : Атрибут { }
После этого определите метку, которую нужно прикрепить к классу:




Вот класс MyAopHandler, определённый следующим образом:




Обратите внимание, что конкретная часть кода эквивалентна «классу прокси», который фактически меняет контекст выполнения метода. Объектно-ориентированные структуры программ, такие как делегаты, могут использоваться для открытия конкретной реализации внешнему миру для вторичной разработки.




Предыдущий:ES5, ES6, ES2016, ES. Далее: Что происходит с версией Javascrip{filter}t?
Следующий:Руководство по PowerShell — версия версии 0.3
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com