4

StreamWriterを使用してログを記録できる外部ライブラリを使用しています。ここで、ログの内容に基づいて処理を追加したいと思います。ログファイルのループを避けたいので、StreamWriterから継承するクラスを作成したいと思います。
メソッド/コンストラクターの再実装を最小限に抑えてStreamWriterから継承するための最良の方法は何ですか?

4

2 に答える 2

9

正確に何をしたいのかわかりませんが、ストリームに書き込まれている内容を調べたいだけの場合は、次のようにすることができます。

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);
    }
}
于 2010-02-15T15:43:57.750 に答える
2

外部ライブラリが使用するコンストラクターを決定し、それを実装します(またはそれらすべてを実装します)。次に、外部ライブラリが使用する書き込みメソッドをオーバーライドする必要があります。

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);
    }
}
于 2010-02-15T15:44:30.247 に答える