保存文件 - xmlSerializer
Posted
技术标签:
【中文标题】保存文件 - xmlSerializer【英文标题】:Save file - xmlSerializer 【发布时间】:2015-01-26 10:49:37 【问题描述】:我正在创建一个使用此代码序列化文件的方法:
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.cs 16 65 文件序列化器 "
这是为什么?
**编辑*
有效的新代码:
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(type);
+ 不需要@
@path
【参考方案1】:
您的错误在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);
【讨论】:
【参考方案2】:var serializer = new System.Xml.Serialization.XmlSerializer(type);
而不是
XmlSerializer serializer = new XmlSerializer(typeof(type));
【讨论】:
【参考方案3】:XmlSerializer
采用Type
参数。 type
已经是 Type
类型,所以你不需要调用 typeof()
就可以了。 typeof()
仅在您将类名或泛型参数放在括号内时才需要。
【讨论】:
以上是关于保存文件 - xmlSerializer的主要内容,如果未能解决你的问题,请参考以下文章