Odhalujeme .net - Deserializace - řešení
Aneb, jak se také nedočkat správné odpovědi. Zřejmě jsem zvolil velice záludnou otázku a přestože si ji přečetlo jistě více jak 70 lidí, žádný se nepokusil o její zodpovězení.
Nebudu tedy více napínat všechny ty, kteří čekají na správné řešení. Problémem, na který jsem narazil, bylo zpracovávání tzv. bílých znaků, whitespacehandling. Jak už jsem se zmínil, bylo potřeba serializovat a zpětně deserializovat malé konfigurační objekty a mezi jednotlivými vlastnostmi se objevila i samotná mezera.
Ta se ovšem při použití vstupního parametru typu StringReader nepřevedla zpět. Tudíž bylo nutné explicitně vytvořit XmlTextReader a teprve ten použít pro deserializaci xml řetězce. Pokud se podíváte blíže na implementaci metody Deserialize() např. pomocí Reflectoru, zjistíte, že se interně vytváří právě XmlTextReader a nastavuje se mu property WhitespaceHandling. A právě v nastavení této property ležel ten hlavní důvod a úskalí celého řešení.
Takže cena pro tuto chvíli zůstává pro mě.
Comments
Rene
Zdravim Jardo, testuji funkcnost komentaru. Protoze kdyz jsem na tvoji hadanku odpovidal, tak ti moje odpoved nedorazila nebo neprosla. BTW: Strefil jsem se ;)
Ahoj René, tak jsem prošel celou DB a tvuj komentár jsem nenašel. Tech nevyžádaných (pouze url) zase tolik nemám, abych náhodou smazal zrovna tvuj. Tak ted nevím, zda nezacít podezírat CS. Pravda, tech komentáru tu tolik nemám, takže je klidne možné, že to obcas zahapruje. Díky
BTW: tak ted si nejsem jist, že by skutecne chybka pri pridávání druhého komentáre v porádí?
Rene
Nevim Jardo, komentar jsem poslal a pak se CS yacal chovat "divne". Myslim, ze se objeila nejaka chybova stranka.
Pokud by se to opakovalo, dam ti vedet.
Tak se nakonec nejednalo o chybu CS ale moji. Mám vložené nekteré CS moduly a jeden z nich nepovolil víc jak jeden komentár k príspevku. Tímto se omlouvám. Díky