Сохранить файл-xmlSerializer
Я создаю метод сериализации файла, используя этот код:
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();
}
Но Visual Studio говорит мне об этом, когда я пытаюсь построить: "Ошибка 1 не удалось найти имя типа или пространства имен "type"(отсутствует директива using или ссылка на сборку?) c:userserikdocumentsvisual studio 2013ProjectsFileSerializerFileSerializerClass1.cs 16 65 Файлосериализатор "
Почему это?
**EDIT *
Новый код, который работает:
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;
}
Читать по вызов:
myClass newClass = (myClass)Read(file, type);
Сохранить вызовом:
Save(object, path, type);
Спасибо! Эрик
3 ответа:
Ваша ошибка в
new XmlSerializer(typeof(type));
. Вам не нужноtypeof
.new XmlSerializer(type);
достаточно.Поскольку вы сериализуете объект
file
(и его тип можно определить в функции), вам не нужно передавать его тип. Таким образом, ваш код может быть переписан какpublic void Save<T>(T file, String path) { XmlSerializer serializer = new XmlSerializer(typeof(T)); using (StreamWriter writer = new StreamWriter(path)) { serializer.Serialize(writer, file); } }