我該如何去編寫自己的流操作類?C#實現一個自定義流writer-esque類
基本上我試圖包裹我的頭是存儲在作家底層流的引用。例如,使用StreamWriter寫入內存流時,Write()被創建時,將寫入基礎內存流。
我可以在不使用指針或不安全代碼的情況下存儲對基礎流的引用嗎?即使它只是我想「寫」的字符串。
真的,這與流程編寫者沒什麼關係,我只是想知道如何在類中存儲引用。 StreamWriter是我可以爲此提出的最好例子。
我該如何去編寫自己的流操作類?C#實現一個自定義流writer-esque類
基本上我試圖包裹我的頭是存儲在作家底層流的引用。例如,使用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");
}
}
我不知道你試圖解決的問題是什麼,但是你可能希望看看從流中繼承而不是包裝它。只是一個想法。 – 2010-04-07 00:22:36