Výsledky 1 až 3 z 3

Téma: [C#] Serializace

  1. #1

    Standardní [C#] Serializace

    Zdravim,

    resim serializaci v C#. Konkretne se mi jedna o tohle:
    Kód:
    List<List<int>> g = new List<List<int>>();
    g.Add(new List<int>());
    g.Add(new List<int>());
    g.Add(g[0]); // zde opravdu vkladam odkaz na prvni seznam
    g[0].Add(1);
    
    XmlSerializer x = new XmlSerializer(typeof(List<List<int>>));
    StringWriter sw = new StringWriter();
    x.Serialize(sw, g);
    g = (List<List<int>>)x.Deserialize(new StringReader(sw.ToString()));
    g[0].Add(2);
    promenna g obsahuje pred serializaci 3 seznamy integeru = {{1},{},{1}};
    po serializaci a deserializaci opet to same = {{1},{},{1}};
    Ovsem posledni prikaz (g[0].Add(2); ) zmeni jen prvni prvni seznam. Cili v g je = {{1,2},{},{1}};

    Zda se tedy (a podle obsahu sw ani jina moznost neni) ze treti seznam v g po deserializaci neni odkazem na prvni seznam.

    Jak docilit toho aby reference zustaly zachovany?

    PS: z prednasky o Jave si pamatuju, ze Java by reference zachovavat mela, tak je mi nejasne, proc to C# neumi :/
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  2. #2

    Standardní Re: [C#] Serializace

    Tak uz jsem na to prisel

    Jde o to, ze serializator XmlSerializer nepodporuje reference. Musi se pouzit BinaryFormatter(pripadne SOAP formatter, nemam odzkouseno), ten dokaze zachovavat reference.
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  3. #3

    Standardní Re: [C#] Serializace

    jen abych prispel k tematu XML serializace v .NET 2:
    pokud je zapotrebi vlastni serializace, trida muze implementovat rozhrani ISerializable
    vice napr. zde : http://msdn2.microsoft.com/en-us/lib...ializable.aspx
    AMD Barton 2500+@2152MHz(12.5*172/1,65V) AQXFA 0335MPMW @ ASUS A7V8X full @ Cooper Silent 2 TC Rev.2 lapped@ 512MB DDR333 @ GeForce 4 Ti4200 128MB 310/610MHz @ Samsung SpinPoint 160GB S-ATA + WD 80GB JB 8MB @ DVD LG GSA-4163B @ DVD Pioneer 106s @ SB Audigy Player @ Fortron 350W+12cm fan @ Edimax EW-7128G
    Mobile : DELL Inspiron 1520

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •