Mit der Hilfe von Extension Methods können wir einem vorhandenen Typen zusätzliche Methoden hinzufügen, ohne einen neuen abgeleiteten Typ zu erstellen und ohne den ursprünglichen Typ bearbeiten zu müssen. Bei Extension Methods handelt es sich um statische Methoden. Im Laufe der Zeit ist eine beachtliche Sammlung an Extension Methods entstanden, welche in den verschiedensten Projekten zum Einsatz kamen und auch immer noch kommen. Ich möchte nun in einer kleinen Serie ein paar Methoden vorstellen, welche vielleicht für den einen oder anderen auch von Interesse sein könnten. Den Anfang machen Extension Methods zum Typ Object.
AsString
Jedes Object unterstützt die Methode ToString, allerdings muss vorher auf null überprüft werden, da es sonst zu einer Exception kommt. Daher gibt es die mit AsString eine Option, dass zunächst auf null überprüft wird und in diesem Fall ein leerer String zurückgegeben wird und ansonsten die klassische ToString-Methode verwendet wird.
public static string AsString(this object input)
{
return input == null
? string.Empty
: input.ToString();
}
WriteLine
In Kombination AsString möchte ich euch WriteLine vorstellen, welches ein Object entgegnen nimmt und einfach im Debug-Window ausgibt. Dies bietet sich während der Entwicklung an, weil man so einfach ganz schnell sich die jeweiligen Objekte ausgeben lassen kann.
public static void WriteLine(this object input)
{
System.Diagnostics.Debug.WriteLine(input.AsString());
}
Clone
Manchmal braucht man eine Kopie von einem Object, mit dem man dann weitere Operationen durchführen muss ohne das ursprüngliche Object zu manipulieren. Hier kommt Clone ins Spiel, welches genau diese Aufgabe übernimmt. Es kommt hier Newtonsoft.Json zum Einsatz, welches sich aber eh in nahezu allen Projekten vorhanden ist.
public static T Clone<T>(this object input)
{
var json = JsonConvert.SerializeObject(input);
return JsonConvert.DeserializeObject<T>(json);
}
In diesem Beitrag habe ich euch einige Extension Methods vorgestellt, welche in verschiedenen Projekten vor mit zum Einsatz gekommen sind oder immer noch kommen. Habt ihr noch weitere Extension Methods für Objects? Dann teilt die doch mit der Community über die Kommentarfunktion zu diesem Beitrag.