C#实现自定义流writer-esque类

时间:2010-04-06 23:58:58

标签: c# pointers reference unsafe

我将如何编写自己的流操纵器类?

基本上我正在努力解决的问题是在作者中存储对底层流的引用。例如,当使用StreamWriter写入内存流时,当创建Write()时,将写入底层内存流。

我可以在不使用指针或不安全代码的情况下将引用存储到基础流中吗?即使它只是一个字符串,我也想“写”。

实际上这与流编写器没什么关系,我只是想知道如何在类中存储引用。 StreamWriter是我能想到的最好的例子。

2 个答案:

答案 0 :(得分: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);        
    }
}

答案 1 :(得分: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");
    }

}
相关问题