我有一个类存储在列表中.
我序列化了......
XmlDocument xd = new XmlDocument();
MemoryStream ms = new MemoryStream();
XmlSerializer xm = new XmlSerializer(typeof(List<BugWrapper>));
xm.Serialize(ms, _bugs);
StreamReader sr = new StreamReader(ms);
string str = sr.ReadToEnd();
xd.Load(ms);
Run Code Online (Sandbox Code Playgroud)
我查看str并发现它是空的,但是该集合有一个对象.
为什么会发生这种情况?
是的-你保存到内存流,在离开它结束.你需要用以下方式"回放"它:
ms.Position = 0;
Run Code Online (Sandbox Code Playgroud)
就在你创建之前StreamReader:
xm.Serialize(ms, _bugs);
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
string str = sr.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
但是,您需要在加载之前再次回放它,XmlDocument除非您删除最后两行,我怀疑这只是用于调试.只是为了好的措施,让我们在完成它之后关闭内存流:
using (MemoryStream stream = new MemoryStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(List<BugWrapper>));
seralizer.Serialize(stream, _bugs);
stream.Position = 0;
XmlDocument doc = new XmlDocument();
doc.Load(stream);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3630 次 |
| 最近记录: |