Pergunta

Como eu escreveria minha própria aula de manipulador de fluxo?

Basicamente, o que estou tentando entender é armazenar a referência ao fluxo subjacente no escritor. Por exemplo, ao gravar em um fluxo de memória usando um streamwriter, quando uma gravação () é feita, o fluxo de memória subjacente é gravado.

Posso armazenar a referência a um fluxo subjacente sem usar ponteiros ou código inseguro? Mesmo que fosse apenas uma corda que eu queria "escrever".

Realmente isso tem pouco a ver com escritores de fluxo, e estou me perguntando como poderia armazenar referências em uma aula. O streamwriter foi o melhor exemplo que eu poderia inventar para isso.

Foi útil?

Solução

Nenhum código inseguro é necessário. Confira este exemplo que montei.

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

Outras dicas

Basta declarar uma propriedade do fluxo de tipo e atribuir algum valor a ele. Se você postar algum código, poderá obter uma resposta um pouco mais clara. Aqui está uma amostra.

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

}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top