Domanda

Come potrei fare per scrivere il mio classe di flusso manipolatore?

Fondamentalmente quello che sto cercando di avvolgere la mia testa intorno sta memorizzando il riferimento al flusso sottostante nello scrittore. Ad esempio, quando si scrive ad un flusso di memoria utilizzando uno StreamWriter, quando viene effettuata una Write (), il flusso di memoria sottostante viene scritto.

Posso conservare il riferimento ad un flusso sottostante senza l'utilizzo di puntatori o codice non sicuro? Anche se era solo una stringa ho voluto "scrivere" per.

In realtà questo ha poco a che fare con gli scrittori del flusso, e sto solo chiedendo come avrei potuto memorizzare i riferimenti in una classe. Lo StreamWriter è stato l'esempio migliore che potrei fornire per questo.

È stato utile?

Soluzione

Non è necessaria alcuna codice unsafe. Dai un'occhiata a questo esempio, ho messo insieme.

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

Altri suggerimenti

Basta dichiarare una proprietà di tipo Stream e assegnare un valore ad esso. Se pubblichi qualche codice si potrebbe ottenere risposta un po 'più chiaro. Ecco un esempio però.

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

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top