Veľkonočná akcia je tu a s ňou aj extra kredity ZADARMO na náš interaktívny e-learning. Dobij si teraz kredity a posuň sa vo svojej kariére vpred!
Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 10. diel - Serializácia a deserializácia v C# .NET

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
paanoik
Člen
Avatar
Odpovedá 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.

 
Odpovedať
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.

Odpovedať
5.7.2014 14:46
Situácia normálna, všetko v hajzli.
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na wolf661
David Hartinger:5.7.2014 14:51

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

Odpovedať
5.7.2014 14:51
New kid back on the block with a R.I.P
Avatar
wolf661
Člen
Avatar
Odpovedá na David Hartinger
wolf661:9.7.2014 23:28

Aha tak preto diky.

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

 
Odpovedať
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

 
Odpovedať
29.1.2016 22:36
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá 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.

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

 
Odpovedať
17.5.2016 12:41
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá 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.

 
Odpovedať
17.5.2016 21:11
Avatar
Odpovedá 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í?

 
Odpovedať
18.5.2016 0:29
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 40.