Cvičení 9 - Streamy, Serializace
Pro potřeby testování si vytvořte třídu Contact, kterou budete ukládat. Třída bude obsahovat, jméno, věk, email, datum narozeni, vahu a příznak, že daná osoba je vdaná/ženatá.
U této třídy implementujte metodu ToString tak, aby šla snadno vypisovat na konzoli. Vytvořte si konzolovou aplikaci, která bude obsahovat pole těchto objektů a bude s nimi dále pracovat dle následujících bodů.
Úloha 0 - Design pattern Factory
Na základě uvedeného obrázku s popisem řešení pomocí vzoru Factory implementujte následující úkoly jako třídy implementující rozhraní IContactDao
a IContactDbFactory
.
Úloha 1 - Textový soubor
Pomocí tříd StreamReader a StreamWriter pracujte s textovým souborem.
- Uložte kolekci kontaktů do textového souboru
- Uložené kontakty načtěte a vypište do konzole
Úloha 2 - Binární soubor
Pomocí tříd BinaryReader a BinaryWriter pracujte s binárním souborem.
Uložte několik kontaktů do binárního souboru
Uložené kontakty načtěte a vypište do konzole
Úloha 3 - Xml serializace
- Serializujte pole kontatků pomocí XML serializace
- Deserializujte pole kontatků a vypište do konzole
Úloha 4 - Binární serializace
- Serializujte pole kontatků pomocí binární serializace
- Deserializujte pole kontatků a vypište do konzole
Úloha 5 - Eventy a serializace
- Definujte novou třídu ContactListener a v ní metodu odpovídající delegátu EventHandler. Do třídy Contact definujte event pro změnu váhy StateChanged.
- V testovací třídě připojte na tento event metodu objektu ContactListener, která není serialozovatelná zaregistrujte u kontaktu obsluhu, reagující na tuto událost a daný kontakt se pokuste serialozovat. Nefunkčnost binární serializace vyřešte přidáním metaatributu k eventě
[field: NonSerialized]