В целях повышения квалификации пытался понять зачем нужен PostSharp. Понял, что простым способом можно добавить к методу код, который вызовется до его исполнения, после исполнения и в случае возникновения ошибки. Но не понял зачем это нужно и какая практическая выгода от этих движений?
Кто может объяснить на простом практическом примере?
Здравствуйте, Аноним, Вы писали:
А>В целях повышения квалификации пытался понять зачем нужен PostSharp. Понял, что простым способом можно добавить к методу код, который вызовется до его исполнения, после исполнения и в случае возникновения ошибки. Но не понял зачем это нужно и какая практическая выгода от этих движений?
А>Кто может объяснить на простом практическом примере?
Если честно, то я не часто слышал о применении PostSharp в production коде, но в одном из наших проектов он таки применяется, в частности для упрощения реализации интерфейса INotifyPropertyChanged для определенного набора классов. У нас немного другая реализация, но общую идею, как это сделать с помощью PostSharp-а можно почитать здесь: AOP Implementation of INotifyPropertyChanged
ST>но в одном из наших проектов он таки применяется, в частности для упрощения реализации интерфейса INotifyPropertyChanged для определенного набора классов.
по ссылке нашел такую фразу:
In this step, we transform our base class 'NotifyingObject' into an Aspect.
Трансформация некоего класса в аспект — это общепринятая фраза? А где можно почитать про эту операцию (с примерами) подробнее?
Здравствуйте, _novice_, Вы писали:
__>Здравствуйте, skodnik, Вы писали:
S>>Трансформация некоего класса в аспект — это общепринятая фраза? А где можно почитать про эту операцию (с примерами) подробнее?
__>Можно например написать аспекты-атрибуты, которые позволяют декларативно __>задать ограничения на параметры методов и на свойства классов.
__>
Здравствуйте, Аноним, Вы писали:
А>Кто может объяснить на простом практическом примере?
Аспекты вводят как-бы дополнительное измерение пространства в архитектуру.
Самый простейший (и излюбленный) пример PostSharp — логгирование.
Без него, тебе бы пришлось в каждом методе писать код, не имеющий отношения к бизнес-логике: