АОП для винформ
-
04-07-2019 - |
Вопрос
Как регистрировать клики пользователей в приложении winform, не усложняя код? АОП ответ? Как отслеживать контрольно-измерительные приборы?
Решение
Это зависит скорее от ваших реальных требований.
Для простого / образца / прототипа приложения winforms я бы предложил базовый обработчики событий WinForms с кодом (если он не слишком тяжелый) в методах обработчика. Если код тяжелый, содержит жесткие бизнес-правила и не взаимодействует с формой, то лучше переместить этот код в другой класс и вызвать его из обработчика событий.
Аспектно-ориентированное программирование делает это дальше. Как правило, лучше всего применять в крупных проектах. Вам по-прежнему нужны обработчики событий для элементов формы (и я рекомендую придерживаться основанных на элементах управления обработчиков событий - не пытайтесь создавать свои собственные глобальные средства обработки событий), но они должны выполнять вызовы объектов Command (см. Шаблон команд в GangOfFour). Эти командные объекты могут быть вызваны из любого места в вашем приложении. Если вы хотите инструментарий, инструментарий должен быть на этих объектах Command, а не на событиях WinForms. Вы можете использовать контейнеры Inversion of Control , например Castle Windsor , чтобы внедрить протоколирование / аудит в команды без необходимости вообще изменять приложение, используя Шаблон перехватчика . Вот пример от Дэвида Хейдена
Другие советы
Общий метод захвата кликов в winforms - это обработка Control.MouseClick . Вы также можете посмотреть Control.MouseDown и Control.MouseUp если вы хотите более подробную информацию.
Если вы предоставите более подробную информацию о том, что вы пытаетесь сделать, мы, вероятно, сможем найти более точный ответ.