2 Stimmen

AOP für Winforms

Wie erfasst man Benutzerklicks in einer Winform-Anwendung, ohne den Code sehr kompliziert zu machen? Ist AOP die Antwort? Wie kann man Instrumentierungen verfolgen?

5voto

Neil Barnwell Punkte 39692

Dies hängt vielmehr von Ihrem tatsächlichen Bedarf ab.

Für eine einfache/beispielhafte/prototypische Winforms-Anwendung würde ich Folgendes vorschlagen WinForms-Ereignishandler mit dem Code (sofern er nicht zu umfangreich ist) in den Handler-Methoden. Wenn der Code sehr umfangreich ist, harte Geschäftsregeln enthält und nicht mit dem Formular interagiert, ist es am besten, diesen Code in eine andere Klasse zu verschieben und ihn über den Event-Handler aufzurufen.

Aspektorientierte Programmierung geht noch weiter. Es ist im Allgemeinen am besten für größere Projekte geeignet. Sie brauchen immer noch Event-Handler für Ihre Formularelemente (und ich empfehle, sich an die Control-basierten Event-Handler zu halten - versuchen Sie nicht, Ihre eigene globale Event-Handling-Funktion zu erstellen), aber sie sollten Aufrufe an Command-Objekte machen (siehe Befehlsmuster in GangOfFour). Diese Befehlsobjekte können dann von überall in Ihrer Anwendung aufgerufen werden. Wenn Sie eine Instrumentierung wünschen, sollte die Instrumentierung auf diesen Befehlsobjekten und nicht auf den WinForms-Ereignissen erfolgen. Sie können die Umkehrung der Kontrolle Behälter wie Schloss Windsor um die Protokollierung/Auditierung in die Befehle einzubauen, ohne dass Sie Ihre Anwendung überhaupt ändern müssen, indem Sie die Abfangjäger-Muster . Hier ein Beispiel von David Hayden

0voto

Charlie Punkte 42390

Die allgemeine Methode zur Erfassung von Klicks in Winforms ist die Handhabung Control.MouseClick . Sie können auch nachsehen Control.MouseDown y Control.MouseUp wenn Sie genauere Informationen wünschen.

Wenn Sie genauer beschreiben, was Sie vorhaben, können wir Ihnen wahrscheinlich eine gezieltere Antwort geben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X