Zapisywanie do strumienia dowolnego typu

0

Witam,
mam do zrobienia klase (writera) ktora pozwala zapisac liczbe do dowolnego typu strumienia.
Jak sie za to zabrac?
W konstruktorze musze przekazac Stream ale jest to klasa abstrakcyjna, nie moge stworzyc jej instancji).
Prosze, naprowadzcie mnie jak rozwiazac to zadanie.

0

Tak, Stream jest klasą abstrakcyjną, ale np. klasa MemoryStream, która z niej dziedziczy, już nie jest. W Twojej klasie zatem musisz mieć zmienną na obiekt typu Stream. W konstruktorze zaś przekazujesz utworzony gdzieś indziej obiekt typu pochodnego. Ot, coś w ten deseń:

public class Zapisywarka
  {
    Stream strumien = null;

    public Zapisywarka(Stream strm)
    {
      if (strm == null)
        throw new ArgumentException("Strumień nie może być null");
      strumien = strm;
    }

    public void Zapisz(string dane)
    {
      byte[] daneWPostaciTablicyBajtow = Encoding.ASCII.GetBytes(dane);
      strumien.Write(daneWPostaciTablicyBajtow, 0, daneWPostaciTablicyBajtow.Length);
    }
  }

W konstruktorze można od razu się upewnić, czy czasem strumień jest niezainicjalizowany - wtedy niech wyrzuca wyjątek. Użycie:

FileStream fs = new FileStream("blabla.txt");
ZapisywarkaStreamow zap = new ZapisywarkaStreamow(fs);
zap.Zapisz("test");

1 użytkowników online, w tym zalogowanych: 0, gości: 1