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 回答