NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 10 - Serializace a deserializace v C# .NET

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
paanoik
Člen
Avatar
Odpovídá na Kit
paanoik:2.8.2013 17:49

myšleno jako global error handler .. e.g.

try
{
  Application.Run(new Form1());
}
catch
{
  //global error handler here
}

Ale ono tohle zobecňování se dost dobře v praxi použít většinou nedá. Často dělám na nástrojích, které jsou jednoúčelové - konverze, import/export, zpracování dat, kde se dá buď říct, že to funguje, nebo se to posralo a jde o stav, který je buď potřeba nějak handlovat nebo na něj upozornit klienta. V obou případech pomáhá ten global handler, protože místo výjimky jednoduše vybleje obecnou hlášku, že při běhu programu došlo k chybě a do logu mi vypíše co potřebuju já (tzn. detailní exception). Já nebudu za blbce, protože program vlastně nespadl, jen se stalo něco, za co můžou stejně oni, protože testovací data problémy nezpůsobovala. A navíc mě to stojí minimum práce, narozdíl od hodnocení a handlování každé třídy zvlášť.

Jeden kolega mi kdysi řekl památnou větu ve smyslu, že pokud máš čas si hrát s takovýma blbostma jako lokální error handlery, vyhazuješ buď prachy svoje nebo klienta. Jako není to myšlený tak, že se všechny handlery nahradí jedním, tam, kde je zřejmý, že k těm problémům dochází (obecně cokoliv externího - soubory, db, knihovny), catchovat hned při psaní. Ale než paranoidně procházet celej kód a přemýšlet, kde by se to tak ještě mohlo posrat, global handler FTW.

 
Odpovědět
2.8.2013 17:49
Avatar
wolf661
Člen
Avatar
wolf661:5.7.2014 14:46

Cavte, ako som si tu vsimol vlastnosti triedy Uzivatel su verejne(public). Preco je to tak? Ja som si myslel ze jeden z principov OOP je zapuzdrenie.

Odpovědět
5.7.2014 14:46
Situácia normálna, všetko v hajzli.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na wolf661
David Hartinger:5.7.2014 14:51

Kdyby vlastnost nebyla public, tak by ji deserializer těžko nastavil ;-)

Odpovědět
5.7.2014 14:51
New kid back on the block with a R.I.P
Avatar
wolf661
Člen
Avatar
Odpovídá na David Hartinger
wolf661:9.7.2014 23:28

Aha tak preto diky.

Odpovědět
9.7.2014 23:28
Situácia normálna, všetko v hajzli.
Avatar
Michal Žůrek - misaz:2.1.2015 14:22

Ona XML serializace je skutečně jen na takové drobky, zvykl jsem si používat binární serializaci a už vůbec nemusím řešit nějaké bezparametrické konstruktory, neschopnost serializovat Dictionary a podobné věcičky. Jen teda ten výsledek není moc lidem čitelný, ale to většinou nevadí.

 
Odpovědět
2.1.2015 14:22
Avatar
forcabarca
Člen
Avatar
forcabarca:29.1.2016 22:36

Chyba v přiloženém kódu, kopíruji to (tohle by se vážně asi stávat nemělo přikládat kód s chybou):
Warning 1 Could not write lines to file "obj\Debug\\Tem­poraryGenerated­File_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. SerializaceDe­serializace

 
Odpovědět
29.1.2016 22:36
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na forcabarca
Jan Vargovský:29.1.2016 22:42

Kód je ok, jen jsem tam nechal i věci z kompilace. Si smaž složku obj a zkompiluj.

 
Odpovědět
29.1.2016 22:42
Avatar
Štěpán Wünsch:17.5.2016 12:41

Proč není Serializer generický? Pokud serializuju jiný typ, než ten, který předám v konstruktoru, tak vyvolá vyjímku. Je to tím, že byl zaveden dřív než genericita? A dá se nějak obejít nutnost porušit zapouzdření? Díky za odpověď

 
Odpovědět
17.5.2016 12:41
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Štěpán Wünsch
Jan Vargovský:17.5.2016 21:11

Můžeš to trošku rozvést? Instance serializeru je vázaná s typem, který budeš serializovat. Nemůžeš tam předat typ X a pak chtít po něm, aby serializoval typ Y.

 
Odpovědět
17.5.2016 21:11
Avatar
Odpovídá na Jan Vargovský
Štěpán Wünsch:18.5.2016 0:29

Hlavní otázka byla proč není Serializer generický, když se váže s typem. Přijde mi logičtější kdyby byl generický jako např. List<T>.

Při užití generické verze bych i ve Visual Studiu podle typu hned věděl, jaký typ serializuje. Připadá mi, že by generický byl lepší... Proto mě zajímá proč? Byly generické typy až v nějaké novější verzi? Nebo má třeba genericita v tomhle nějaká omezení?

 
Odpovědět
18.5.2016 0:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 40.