Унаследование от Streamwriter с наименьшими возможными усилиями

StackOverflow https://stackoverflow.com/questions/2266986

  •  20-09-2019
  •  | 
  •  

Вопрос

Я использую внешнюю библиотеку, которая позволяет регистрировать, используя Streamwriter - теперь я хочу добавить некоторую обработку на основе содержимого журнала. Поскольку я хочу избежать прохождения файла журнала, я хотел бы написать класс, который наследует от Streamwriter.
Как лучше всего наследовать от Stremwriter с лишним переосмыслений методов/конструкторов?

Это было полезно?

Решение

Я не уверен в том, что вы хотите делать именно, но если вы хотите только осмотреть то, что написано в потоке, вы можете сделать это:

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);
    }
}

Другие советы

Определите конструктор. Используйте внешнюю библиотеку и реализуйте (или просто реализуйте их все), и тогда вам просто нужно переопределить метод записи, которые использует ваша внешняя библиотека.

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);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top