2010-04-06 30 views
0

我該如何去編寫自己的流操作類?C#實現一個自定義流writer-esque類

基本上我試圖包裹我的頭是存儲在作家底層流的引用。例如,使用StreamWriter寫入內存流時,Write()被創建時,將寫入基礎內存流。

我可以在不使用指針或不安全代碼的情況下存儲對基礎流的引用嗎?即使它只是我想「寫」的字符串。

真的,這與流程編寫者沒什麼關係,我只是想知道如何在類中存儲引用。 StreamWriter是我可以爲此提出的最好例子。

+0

我不知道你試圖解決的問題是什麼,但是你可能希望看看從流中繼承而不是包裝它。只是一個想法。 – 2010-04-07 00:22:36

回答

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);   
    } 
} 
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"); 
    } 

}