Seit ich in C# die Erweiterungsmethoden kennengelernt habe nutze ich sie, um meinen Code übersichtlicher zu machen.

Was sind Erweiterungsmethoden?

Mit Erweiterungsmethoden hat man die Möglichkeit, den Instanzen von Objekten, deren Quellcode man nicht zur Verfügung hat und von denen man keine eigenen Objekte ableiten kann oder will, eigene Methoden (Erweiterungsmethoden) hinzuzufügen.

Dafür ein einfaches Beispiel: Wenn ich in meinem Code oft eine Zahl runden muss, dann kann ich entweder jedes Mal die Methode Math.Round() mit den entsprechenden Parametern aufrufen oder ich schreibe einmalig eine Erweiterungsmethode:

Auf diese Erweiterungsmethode kann ich dann – vorausgesetzt, der entsprechende Namespace, in dem die Erweiterungsmethode liegt, ist referenziert – einfach im Kontext des zu rundenden Werts zugreifen:

Im Vergleich, der Aufruf ohne Erweiterungsmethode:

Was muss man nun genau machen, wenn man Erweiterungsmethoden erstellen will?

Zunächst braucht man eine eigene Klasse dafür. Diese kann z.B. ExtentionMethods, Extentions, Erweiterungsmethoden etc. heißen, wie ihr wollt.

Nach Erstellen der Klasse muss sie die Modifizierer public und static erhalten, damit die Erweiterungsmethoden auch erkannt werden.

Die Erweiterungs-Methoden selbst müssen auch die Modifizierer „public static“ haben.

Eine Erweiterungsmethode hat immer mindestens einen Parameter, dem das Schlüsselwort this vorangestellt wird. Dieses Schlüsselwort legt fest, bei welchem Objekttyp die Erweiterungsmethode verfügbar sein wird.

Will man eine Erweiterungsmethode für mehrere Datentypen (z.B. double und decimal) erstellen, muss man die Methode mehrmals erstellen, einmal für jeden Datentyp.

Weitere Informationen gibt es im MSDN.