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 | 2048 (1651) | Cvenemir |
| » | branje iz datoteke c#Oddelek: Programiranje | 1761 (1490) | darkolord |
| » | [c] Enaki datotekiOddelek: Programiranje | 1149 (1009) | Spura |
| » | C# FailOddelek: Programiranje | 1392 (1041) | nuclear |
| » | VC# Zapis podatkov na diskOddelek: Programiranje | 2641 (1897) | matej_jack |