Hallo, ich versuche, eine Datei seriliaze, aber ich habe ein sehr seltsames Problem .C# Serialisierung unbekannt Problem
Beim ersten Speichern werden alle Variablen korrekt serialisiert. Als nächstes bleiben viele Variablen leer andere werden gespeichert.
1 ° Serialisierungscode
public void SaveMireProject(string projectName,string root_path)
{
BinaryFormatter bin = new BinaryFormatter();
using (FileStream _FileStream =
new FileStream(root_path + "\\" + projectName + ".mireprj", System.IO.FileMode.Create, FileAccess.Write))
{
//bin.Serialize(_FileStream, this);
bin.Serialize(_FileStream, Tiles);
bin.Serialize(_FileStream, project_name);
bin.Serialize(_FileStream, root_directory);
try { bin.Serialize(_FileStream, project_pat); } catch { }
try { bin.Serialize(_FileStream, project_type); } catch { }
bin.Serialize(_FileStream, Events);
bin.Serialize(_FileStream, Light);
bin.Serialize(_FileStream, StartupMap);
bin.Serialize(_FileStream, startX);
bin.Serialize(_FileStream, startY);
_FileStream.Close();
_FileStream.Dispose();
}
}
2 ° Deserilization-Code
public void OpenProject(string filename)
{
BinaryFormatter bin = new BinaryFormatter();
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
Tiles = (List<_Tiles>)bin.Deserialize(fs);
project_name = (string)bin.Deserialize(fs);
root_directory = (string)bin.Deserialize(fs);
try { Events = (List<_ev>)bin.Deserialize(fs); } catch { Events = new List<_ev>(); };
try { Light = (List<_light>)bin.Deserialize(fs); } catch { Light = new List<_light>(); };
try { project_pat = (string)bin.Deserialize(fs); } catch { };
try { project_type = (string)bin.Deserialize(fs); } catch { };
try { StartupMap = (string)bin.Deserialize(fs); } catch { };
try { startX = (int)bin.Deserialize(fs); } catch { }
try { startY = (int)bin.Deserialize(fs); } catch { }
}
}
Einige der wichtigen Variablen wie
StartupMap, startX und startY.
nach dem Wert auf die Variable, Ich sehe Whit Debugger, alle Werte sind gespeichert.
i gesetzt Unterbrechungslinie zu speichern. und i Wert sehen sind in den variabile
nächsten, ich versuche, serialisiert zu öffnen jetzt Datei, und ich sehe dieser
Haltepunkt nach der Openproject-Methode gesetzt aufgerufen werden.
Wer weiß, was das Problem ist?
Sie sind nicht die Variablen in der gleichen Reihenfolge zu lesen, dass Sie sich zu schreiben. – CodeCaster
Versuchen Sie nicht, jedes Element abzufangen, wenn ein Element nicht (de) serialisiert werden konnte, wird es nicht mehr synchron laufen. Eine Datei kann deserialisiert werden oder nicht –
Zuerst versuchen Sie, alle 'catch {}' zu entfernen. Sie machen sich offensichtlich blind mit ihnen. – Sinatr