Enregistrer le fichier - xmlSerializer
Je suis en créant une méthode de sérialiser un fichier à l'aide de ce 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();
}
Mais Visual Studio me dit cela lorsque je tente de construire:
"Erreur 1 le type ou Le nom d'espace de noms 'type' n'a pas pu être trouvée (vous manque une directive using ou une référence d'assembly?) c:\users\erik\documents\visual studio 2013\Projets\FileSerializer\FileSerializer\Class1.cs 16 65 FileSerializer
"
Pourquoi est-ce?
**EDIT*
Nouveau code qui fonctionne:
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;
}
lire en appelant le:
myClass newClass = (myClass)Read(file, type);
Enregistrer en appelant le:
Save(object, path, type);
Merci!
Erik
new XmlSerializer(type);
+ Pas besoin de @
à @path
OriginalL'auteur Erik | 2014-11-27
Vous devez vous connecter pour publier un commentaire.
Votre erreur est dans
new XmlSerializer(typeof(type));
. Vous n'avez pas besointypeof
.new XmlSerializer(type);
est assez.Puisque vous sérialiser
file
objet (et son type peut être déterminée dans la fonction), vous n'avez pas à passer son type. Ainsi, votre code peut être ré-écrit commeOriginalL'auteur EZI
au lieu de
OriginalL'auteur andrei.ciprian
XmlSerializer
prend unType
paramètre.type
est déjà de typeType
, de sorte que vous n'avez pas besoin d'appelertypeof()
sur elle.typeof()
n'est nécessaire que lorsque vous mettez un nom de classe ou de paramètre générique à l'intérieur de parenthèses.OriginalL'auteur Mark Raymond