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?

War es hilfreich?

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);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top