Bestehende Klassen erweitern

Die meisten Programmierer haben sich wohl schon irgendeinmal gewünscht, im einem System eine bestehende Klasse auf einfache Weise um ein paar Methoden erweitern zu können, die ganz einfach fehlen zum vollkommenen Glück.

Die C#-Klasse string im .NET-Framework ist wohl so ein Kandidat: Im Standard-Angebot ist da nur 1 Methode Substring, aber viele praktische Methoden wie z.B. Right, die es in VB.NET gibt, fehlen.

Seit C# 3.0 gibt es mit Hilfe sogenannter Extension Methods tatsächlich die Möglichkeit, selbst eine Standard-Klasse wie string auf einfache und elegante Weise zu erweitern. Das sieht dann bei der erwähnten Right-Methode konkret so aus:

public static class Strings {
public static string Right(this string str, int len) {
if (str.Length <= len) { return str; } else { return str.Substring(str.Length - len); } } } [/sourcecode] Der wichtigste Punkt bei dieser Sache ist wohl der, von irgendwoher zu wissen, dass das geht, z.B. eben aus diesem Blog-Eintrag hier. Der Rest ist einfach und lässt sich in der Microsoft-Dokumentation nachlesen, z.B. hier.

Man kann sich natürlich fragen, ob es eine gute Idee ist, Standard-Klassen auf diese Weise zu erweitern, wie z.B. hier in einem Forum-Thread leidenschaftlich diskutiert wurde. Ich denke, es ist wie fast bei allen Dingen: Richtig angewendet, sind extension methods eine nützliche Sache, aber ja, man kann sie missbrauchen, aber nein, die Versuchung zum Missbrauch ist nicht so gross, dass man die Sache per se pauschal zum Teufel schicken müsste.

Veröffentlicht in Keine Kategorie. Schlagwörter: , . 1 Comment »

Eine Antwort to “Bestehende Klassen erweitern”

  1. thomas3577 Says:

    Danke für den Tip. Je nach dem acht sowas schon sinn. Die zusätzlichen Methoden sind so (je nach dem) am richtigen Ort aufbewahrt.


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: