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