Forum » Programiranje » [C#] Deserializacija
[C#] Deserializacija
Cvenemir ::
Pri deserializaciji z naslednjo metodo mi vrže exception
Unable to cast object of type 'System.Collections.Generic.List`1[primerjava_objektov.Oseba]' to type 'primerjava_objektov.Oseba'.
Že pri prejšnji nalogi sem imel isto težavo, pa nisem pogruntal rešitve. Kaj je narobe?
Unable to cast object of type 'System.Collections.Generic.List`1[primerjava_objektov.Oseba]' to type 'primerjava_objektov.Oseba'.
Že pri prejšnji nalogi sem imel isto težavo, pa nisem pogruntal rešitve. Kaj je narobe?
public static void UvoziIzDatoteke(List<Oseba> osebe) { Oseba os = new Oseba(); var stream = File.Open("Osebe.bin", FileMode.Open); var bformatter = new BinaryFormatter(); Console.WriteLine("...Berem podatke o osebah..."); os = (Oseba)bformatter.Deserialize(stream); while (stream.Length > stream.Position) { Console.WriteLine("{0} {1} {2} {3}", os.Ime, os.Priimek, os.DatumRojstva, os.Naslov); } stream.Close(); }
joze67 ::
Naj ugibam - serializiral si List<Oseba>, deserializiraš pa v Oseba. Skratka, odgovor na tvoje vprašanje leži v void IzvoziVDatoteko().
Kako pa se v zanki stream.Position spremeni?
Kako pa se v zanki stream.Position spremeni?
Cvenemir ::
Sem spremenil obe metodi, exceptiona ni več. Kako bi preveril če deserializacija uspe? Vzporedno dodajam še na drug seznam? npr. osebe_test, in ga na koncu izpišem?
//Metoda za izvoz podatkov v datoteko na disku public static void IzvoziVDatoteko(List<Oseba> osebe) { FileStream tokPisanje = new FileStream("Osebe.bin", FileMode.Create); BinaryFormatter dvojiskiOblikovalnik = new BinaryFormatter(); foreach (Oseba os in osebe) { dvojiskiOblikovalnik.Serialize(tokPisanje, os); } tokPisanje.Close(); } //Metoda za uvoz podatkov iz datoteke public static void UvoziIzDatoteke(List<Oseba> osebe) { Oseba os = new Oseba(); FileStream tokBranje = new FileStream("Osebe.bin", FileMode.Open); BinaryFormatter dvojiskiOblikovalnik = new BinaryFormatter(); while(tokBranje.Length>tokBranje.Position) { osebe.Add((Oseba)dvojiskiOblikovalnik.Deserialize(tokBranje)); Console.WriteLine("{0} {1} {2} {3}", os.Ime, os.Priimek, os.DatumRojstva, os.Naslov); } tokBranje.Close(); }
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] DeserializacijaOddelek: Programiranje | 1860 (1463) | Cvenemir |
» | branje iz datoteke c#Oddelek: Programiranje | 1642 (1371) | darkolord |
» | [c] Enaki datotekiOddelek: Programiranje | 1033 (893) | Spura |
» | C# FailOddelek: Programiranje | 1287 (936) | nuclear |
» | VC# Zapis podatkov na diskOddelek: Programiranje | 2505 (1761) | matej_jack |