An dieser Stelle könnte man natürlich einfach eine eigene Methode schreiben. Der Nachteil daran ist, dass man die eigentliche Funktionalität einer Klasse in eine andere trennt und somit die Verbindung schwerer nachzuvollziehen ist.
Mit dem .NET Framework 3.0 kann man sogenannte Extensions schreiben und somit bestehende Typen erweitern. Als erstes Beispiel wollen wir den Typ string so erweitern, dass er eine Methode zur Verfügung stellt die den Inhalt der string Variable als Textdatei an einem Ort speichert, der per Parameter übergeben wird. Das Ziel ist also, dass wir folgenden Code schreiben können und somit den gewünschten Effekt erzielen:
Code:
string text = "Dieser Text soll in eine Textdatei gespeichert werden."; text.ToFile(@"C:\tutorial\MyNewTextFile.txt");
Wenn ihr die Klasse erstellt habt müsst ihr Sicherstellen, dass die Klasse statisch ( static ) ist. Als erstes löscht ihr den Standard Konstruktor der euch von Visual Studio erzeugt wurde. Anschließend solltet ihr eure Using Statements um den Namespace System.IO erweitern, immerhin wollen wir eine Textdatei erstellen.
Man mag sich wahrscheinlich wundern woher nun die Information kommt mit der festgelegt wird welchen Typen wir erweitern wollen. Bisher haben wir das auch noch nicht definiert. Das macht man erst bei der Methode die einen Typen erweitert. Unsere Methode sieht beispielsweise so aus:
Code:
public static void ToFile (this string content, string path)
Code:
public static void ToFile (this string content, string path) { if(string.IsNullOrEmpty(path)) throw new ArgumentNullException("path"); string directory = Path.GetDirectoryName(path); if(!Directory.Exists(directory)) Directory.CreateDirectory(directory); using (TextWriter writer = File.CreateText(path)) { writer.Write(content); } }
Im Quellcode habe ich noch ein paar andere nützliche string Methoden untergebracht, aber letztlich sind euch nicht viele Grenzen gesetzt.
Den Download zum Projekt findet ihr hier ( Das Projekt wurde mit MonoDevelop erstellt ):
LG und HTH