АОП для winforms

Как захватывать клики пользователей в приложении winform, не усложняя код? АОП ответ? Как отслеживать контрольно-измерительные приборы?

2 ответа

Решение

Это зависит скорее от ваших реальных требований.

Для простого / образца / прототипа приложения winforms я бы предложил базовые обработчики событий WinForms с кодом (при условии, что он не слишком тяжелый) в методах обработчика. Если код тяжелый, содержит жесткие бизнес-правила и не взаимодействует с формой, то лучше переместить этот код в другой класс и вызвать его из обработчика событий.

Аспектно-ориентированное программирование берет это дальше. Как правило, лучше всего применять в крупных проектах. Вам по-прежнему нужны обработчики событий для элементов формы (и я рекомендую придерживаться основанных на элементах управления обработчиков событий - не пытайтесь создавать свою собственную глобальную утилиту обработки событий), но они должны совершать вызовы объектов Command (см. Шаблон команды в GangOfFour), Эти командные объекты могут быть вызваны из любого места в вашем приложении. Если вы хотите инструментарий, инструментарий должен быть на этих объектах Command, а не на событиях WinForms. Вы можете использовать контейнеры Inversion of Control, такие как Castle Windsor, для добавления в команды ведения журнала / аудита без необходимости вообще изменять приложение с помощью шаблона Interceptor. Вот пример от Дэвида Хейдена

Общий метод захвата кликов в winforms - это обработка Control.MouseClick. Вы также можете посмотреть Control.MouseDown и Control.MouseUp, если вам нужна более подробная информация.

Если вы предоставите более подробную информацию о том, что вы пытаетесь сделать, мы, вероятно, сможем найти более точный ответ.

Другие вопросы по тегам