首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用DataContractSerializer进行序列化,但无法反序列化

使用DataContractSerializer进行序列化,但无法反序列化
EN

Stack Overflow用户
提问于 2011-02-16 06:20:23
回答 4查看 106.8K关注 0票数 66

我有以下两个函数:

代码语言:javascript
复制
public static string Serialize(object obj)
{
    DataContractSerializer serializer = new DataContractSerializer(obj.GetType());
    MemoryStream memoryStream = new MemoryStream();
    serializer.WriteObject(memoryStream, obj);
    return Encoding.UTF8.GetString(memoryStream.GetBuffer());
}

public static object Deserialize(string xml, Type toType)
{
    MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(xml));
   // memoryStream.Position = 0L;
    XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(memoryStream, Encoding.UTF8, new XmlDictionaryReaderQuotas(), null);
    DataContractSerializer dataContractSerializer = new DataContractSerializer(toType);
    return dataContractSerializer.ReadObject(reader);
}

第一个似乎可以很好地将对象序列化为xml字符串。XML看起来是有效的,没有断开的标记,开头或结尾没有空格,等等。现在,第二个函数不想将xml字符串反序列化为对象。在我得到的最后一行:

在反序列化MY object类型的对象时出错。根级别的数据无效。行1,位置1。

我做错了什么?我尝试了几次重写反序列化函数,似乎总是出现同样的错误。谢谢!

哦,这就是我调用这两个函数的方式:

代码语言:javascript
复制
SomeObject so = new SomeObject();
string temp = SerializationManager.Serialize(so);
so = (SomeObject)SerializationManager.Deserialize(temp, typeof(SomeObject));
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5010191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档