我将如何编写自己的流操纵器类?
基本上,我想要解决的是将对底层流的引用存储在编写器中。例如,当使用 StreamWriter 写入内存流时,执行 Write() 时,会写入底层内存流。
我可以在不使用指针或不安全代码的情况下存储对基础流的引用吗?即使它只是一个我想“写”到的字符串。
实际上,这与流编写器几乎没有关系,我只是想知道如何在类中存储引用。StreamWriter 是我能想到的最好的例子。
不需要不安全的代码。看看我放在一起的这个例子。
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);
}
}
只需声明一个 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");
}
}