这是我的byte [] object
的Deserializer代码public static T DeserializeObject<T>(byte[] xml)
{
//BinaryFormatter xs = new BinaryFormatter();
MemoryStream memoryStream=new MemoryStream(xml);
XmlSerializer xs = new XmlSerializer(typeof(T));
return (T)xs.Deserialize(memoryStream);
}
它提供错误There is an error in XML document
InnerException Invalid character in the given encoding
如何反序列化?
调用功能:
void svc_Get_Conn(object send, GetConnCompletedEventArgs e)
{
CookieContainer con =DeserializeObject<CookieContainer>(e.Result);
}
以下功能来自 Service1.svc.cs
public static byte[] SerializeObject<T>(T obj)
{
try
{
using (MemoryStream memoryStream = new MemoryStream())
{
BinaryFormatter xs = new BinaryFormatter();
xs.Serialize(memoryStream, obj);
return memoryStream.ToArray();
}
}
catch
{
return null;
}
}
答案 0 :(得分:3)
XmlSerializer不能用于反序列化使用BinaryFormatter 1 创建的内容。
解决方案:
备选方案包括Json.NET和protobuf-net,它们都提供.NET Compact Framework(Windows Phone)版本。还有DataContractSerializer,这是“普通”.NET中的标准,但我不确定它对CF有什么支持。
1 序列化格式通常不可互换并且在这种情况下尝试使用不兼容的对与使用JSON序列化并尝试反序列化为ANS一样有意义.1(明显不是JSON)。
将对象序列化和反序列化为 XML文档。
序列化和反序列化[对象] [内部]二进制格式。