POUZE NYNÍ: Získej až 80 % extra kreditů ZDARMA na náš interaktivní e-learning. Zjistit více.
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. 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
Nejnovější komentáře jsou na konci poslední stránky.
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.

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
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
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
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í.

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

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.

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ěď

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.

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í?

Nejnovější komentáře jsou na konci poslední stránky.
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 42.