Dieser Artikel gibt dir einen Einblick, wie du eigene Extension Methods schreiben kannst. Extension Methods wurden vor allem durch LINQ bekannt.

Was sind extension Methods?

Extension Methods sind wie „normale“ Methoden, welche wie Klassenmethoden aufgerufen werden. Der Unterschied zu Klassenmethoden besteht beim Definieren. Klassenmethoden werden innerhalb der Klasse definiert. Extension Methods werden in einer externen Klasse definiert und können jede beliebige Klasse erweitern.

Erstellen von Extension Methods

Doch wie erstellen wir nun eine Extension Method? Hierzu erstellen wir eine neue statische Klasse. Innerhalb dieser Klasse erstellen wir eine statische Methode. Diese Methode muss als ersten Parameter den Typ beinhalten und mit this verknüpft werden. Das sieht dann folgendermaßen aus:

Diese Methode gibt den Parameter unverändert zurück. Wir können allerdings eine neue Methode erstellen, welche die Zeichenkette an den Leerzeichen trennt.

Der Aufruf erfolg wie bei jeder beliebigen Zeichenkette:

Durch extension Methods kann jede beliebige Klasse erweitert werden. Beispielsweise könnte es spezielle Methoden zum Debuggen geben. Auch Klassen aus einem fremden Framework können erweitert werden, um zusätzliche Funktionen zu erhalten. Je nach Struktur ist auch eine Verkettung möglich (z.B. bei LINQ mit myList.Where(..).Select(..)).

Vorteile, Tipps und Fallstricke

Wie man im oberen Beispiel erkennen kann, sind Erweiterungen einfach realisierbar. Der Code wird auch nicht übermäßig länger. Im Vergleich mit statischen Helper-Klassen wird der Aufruf kürzer und besser lesbar. Vor allem bei der Schachtelung von mehreren Aufrufen haben kürzen Extension Methods die Aufrufe sehr stark ab.

Klassennamen, welche die Erweiterungen enthalten, sollten immer als TYPE + „Extension“ aufgebaut sein (z.B. StringExtension, MyClassExtension, IntExtension, AddressExtension). Dadurch wird schnell ersichtlich, für welche Typen diese Klasse Erweiterungen bereitstellt.

Es ist jedoch darauf zu achten, dass eine Methodendeklaration in der Klasse die ExtensionMethod überschreibt. Beispiel:

Habt ihr noch Tipps und Tricks für Extension Methods oder besondere Anwendungsfälle? Ich freue mich über eure Kommentare 🙂

Extension Methods erstellen
Markiert in:     

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.