Datei speichern - xmlSerializer -
Ich bin momentan dabei, eine Methode zum serialisieren einer Datei mit diesem code:
public void Save(Object file, Type type, String path)
{
//Create a new Serializer
XmlSerializer serializer = new XmlSerializer(typeof(type));
//Create a new StreamWriter
StreamWriter writer = new StreamWriter(@path);
//Serialize the file
serializer.Serialize(writer, file);
//Close the writer
writer.Close();
}
Aber Visual Studio sagt mir, das wenn ich versuche zu bauen:
"Fehler 1 Der Typ-oder namespacename 'Typ' konnte nicht gefunden werden (fehlt eine using-Direktive oder ein Assemblyverweis?) c:\users\erik\documents\visual studio 2013\Projects\FileSerializer\FileSerializer\Class1.cs 16 65 FileSerializer
"
Warum ist das so?
**EDIT*
Neuen code, der funktioniert:
public void Save(Object file, String path, Type type)
{
//Create a new Serializer
XmlSerializer serializer = new XmlSerializer(type);
//Create a new StreamWriter
TextWriter writer = new StreamWriter(path);
//Serialize the file
serializer.Serialize(writer, file);
//Close the writer
writer.Close();
}
public object Read(String path, Type type)
{
//Create a new serializer
XmlSerializer serializer = new XmlSerializer(type);
//Create a StreamReader
TextReader reader = new StreamReader(path);
//Deserialize the file
Object file;
file = (Object)serializer.Deserialize(reader);
//Close the reader
reader.Close();
//Return the object
return file;
}
Lesen durch den Aufruf:
myClass newClass = (myClass)Read(file, type);
Sparen Sie durch den Aufruf:
Save(object, path, type);
Dank!
Erik
new XmlSerializer(type);
+ Keine Notwendigkeit für @
bei @path
InformationsquelleAutor Erik | 2014-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Fehler in
new XmlSerializer(typeof(type));
. Sie brauchen nichttypeof
.new XmlSerializer(type);
ist genug.Da Sie serialisieren
file
Objekt (und dessen Typ bestimmt werden kann, in die Funktion), müssen Sie nicht zu gehen seine-Typ. So kann der code neu geschrieben werden alsInformationsquelleAutor EZI
statt
InformationsquelleAutor andrei.ciprian
XmlSerializer
dauertType
parameter.type
ist schon der TypType
, so brauchen Sie nicht zu nennentypeof()
.typeof()
ist nur erforderlich, wenn Sie setzen einen Klassennamen oder eine generische parameter in den Klammern.InformationsquelleAutor Mark Raymond