0

独自のストリームマニピュレータクラスを作成するにはどうすればよいですか?

基本的に、私が頭を包み込もうとしているのは、基になるストリームへの参照をライターに格納することです。たとえば、StreamWriterを使用してメモリストリームに書き込む場合、Write()が作成されると、基になるメモリストリームが書き込まれます。

ポインターや安全でないコードを使用せずに、基になるストリームへの参照を保存できますか?ただの文字列だったとしても、「書きたい」と思っていました。

実際、これはストリームライターとはほとんど関係がなく、参照をクラスに格納する方法を考えています。StreamWriterは、私がこのために思いついた最良の例でした。

4

2 に答える 2

1

安全でないコードは必要ありません。私がまとめたこの例をチェックしてください。

public sealed class StreamManipulator
{
    private readonly Stream _backingStream;

    public StreamManipulator(Stream backingStream)
    {
        _backingStream = backingStream;
    }

    public void Write(string text)
    {
        var buffer = Encoding.UTF8.GetBytes(text);
        _backingStream.Write(buffer, 0, buffer.Length);        
    }
}
于 2010-04-07T00:04:26.580 に答える
0

Stream型のプロパティを宣言し、それに値を割り当てるだけです。いくつかのコードを投稿すると、もう少し明確な答えを得ることができます。ただし、ここにサンプルがあります。

class foo
{
    public MemoryStream MyMemory { get; set; }

    public void Write(string s)
    {
        MyMemory.Write(System.Text.Encoding.ASCII.GetBytes(s));
    }

    [STAThread]
    static void Main()
    {
        foo f = new foo();
        f.MyMemory = new System.IO.MemoryStream();

        f.Write("information");
    }

}
于 2010-04-07T00:11:14.130 に答える