Erben von Streamwriter mit kleinst möglichem Aufwand
-
20-09-2019 - |
Frage
Ich verwende eine externe Bibliothek, mit der die Protokollierung mit StreamWriter ermöglicht wird. Jetzt möchte ich ein paar Handhabungen basierend auf dem Inhalt der Protokollierung hinzufügen. Da ich vermeiden möchte, die Protokolldatei durchzuschlitzen, möchte ich eine Klasse schreiben, die von StreamWriter erbt.
Was ist der beste Weg, um vom Streamwriter mit so wenigen Neuauflagen von Methoden/Konstruktoren zu erben?
Lösung
Ich bin mir nicht sicher, was Sie genau tun möchten, aber wenn Sie nur untersuchen möchten, was im Stream geschrieben wird, können Sie dies tun:
public class CustomStreamWriter : StreamWriter
{
public CustomStreamWriter(Stream stream)
: base(stream)
{}
public override void Write(string value)
{
//Inspect the value and do something
base.Write(value);
}
}
Andere Tipps
Bestimmen Sie den Konstruktor, der die externe Bibliotheks verwendet und implementiert (oder implementiert sie einfach alle), und dann müssen Sie nur die Schreibmethoden (n) überschreiben, die Ihre externe Bibliothek verwendet.
public class Class1 : StreamWriter
{
public Class1(Stream stream)
: base(stream)
{
}
public Class1(Stream stream, Encoding encoding)
: base(stream, encoding)
{
}
public Class1(Stream stream, Encoding encoding, int bufferSize)
: base(stream, encoding, bufferSize)
{
}
public Class1(string path)
: base(path)
{
}
public Class1(string path, bool append)
: base(path, append)
{
}
public Class1(string path, bool append, Encoding encoding)
: base(path, append, encoding)
{
}
public Class1(string path, bool append, Encoding encoding, int bufferSize)
: base(path, append, encoding, bufferSize)
{
}
public override void Write(string value)
{
base.Write(value);
}
}