保存文件 - xmlSerializer [英] Save file - xmlSerializer
问题描述
我正在创建一种使用此代码序列化文件的方法:
I'm creating a method to serialize a file using this 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();
}
但是当我尝试构建时,Visual Studio 告诉我这一点:错误 1 找不到类型或命名空间名称 'type'(您是否缺少 using 指令或程序集引用?) c:\users\erik\documents\visual studio 2013\Projects\FileSerializer\FileSerializer\Class1.cs16 65 文件序列化器"
But Visual Studio tells me this when I attempt to build: "Error 1 The type or namespace name 'type' could not be found (are you missing a using directive or an assembly reference?) c:\users\erik\documents\visual studio 2013\Projects\FileSerializer\FileSerializer\Class1.cs 16 65 FileSerializer "
这是为什么?
**编辑*
有效的新代码:
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);
谢谢!埃里克
推荐答案
你的错误在 new XmlSerializer(typeof(type));
.你不需要 typeof
.new XmlSerializer(type);
就够了.
Your error is in new XmlSerializer(typeof(type));
. You don't need typeof
. new XmlSerializer(type);
is enough.
由于您序列化了 file
对象(其类型可以在函数中确定),因此您不必传递其类型.所以你的代码可以重写为
Since you serialize file
object (and its type can be determined in the function) you don't have to pass its type. So your code can be re-written as
public void Save<T>(T file, String path)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StreamWriter writer = new StreamWriter(path))
{
serializer.Serialize(writer, file);
}
}
这篇关于保存文件 - xmlSerializer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!