Das kann nicht gemacht werden, weil System.Windows.Forms.MessageBox
NICHT eine Instanz von MessageBox
ist. MessageBox.Show()
ist eine statische Methode.
Sie können keine Instanz von MessageBox
erstellen, da diese Klasse keinen öffentlichen Konstruktor hat.
Sie können jedoch Ihre eigene Klasse im Namensraum System.Windows.Forms
erstellen und die
MessageBox
in dieser Methode wie folgt
Sie vermissen das Keyword aus Ihrer Erweiterungsmethode.
Aber da System.Windows.Forms.MessageBox
keinen öffentlichen Konstruktor hat, nur statische Factory-Methoden (die DialogResult
zurückgeben), können Sie keine eigenständige MessageBox
-Instanz erstellen, um Ihre Erweiterungsmethode darauf aufzurufen.
Also, um deine Frage zu beantworten:
Ja, es ist möglich, eine Erweiterungsmethode für MessageBox
zu erstellen (siehe andere Antworten), aber Sie können sie nicht von MessageBox.Foo()
aufrufen. Sie benötigen eine Instanz von MessageBox
, was Sie nicht erstellen können, damit es nicht funktioniert.
Sie müssen der Erweiterungsmethode einen Parameter vom Typ MessageBox
hinzufügen:
Erstellen Sie vor dem Aufruf der Methode
eine Instanz der MessageBox %Vor% [Aktualisierung:
Leider funktioniert das nicht im Fall von MessageBox
, da es keinen öffentlichen Konstruktor gibt. Danke an nemesv für den Hinweis. Das folgende Beispiel sollte theoretisch funktionieren, aber in der Praxis wird es nicht funktionieren. Ich werde es als Referenz verlassen.]
In Ihrem Beispiel rufen Sie die Methode für die Klasse selbst auf. Erweiterungsmethoden gelten nur für Instanzen. Hier ist eine Version Ihres Codes mit den oben genannten Korrekturen:
%Vor%Tags und Links .net c# extension-methods