Унаследование от Streamwriter с наименьшими возможными усилиями
-
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);
}
}
Не связан с StackOverflow