正如@driis 提到的,您不能BinaryFormatter
在 Windows Phone 上使用。您可以在 WCF 端点(即绑定是与和 的自定义绑定的端点)中使用二进制编码,这将在 WP7 上得到支持。您只是不能在那里使用二进制格式化程序。BinaryMessageEncodingBindingElement
HttpTransportBindingElement
更新以下评论:查看您的代码,不仅需要更改代码 - 您还需要更改服务代码,以 Silverlight 支持的格式序列化对象。您可以将DataContractSerializer
, 与二进制读取器/写入器一起使用,或者您可以使用在这两种情况下都支持的另一个库。例如,下面的代码应该适用于桌面版和 SL 版:
public static T DeserializeObject<T>(byte[] xml)
{
using (MemoryStream memoryStream = new MemoryStream(xml))
{
using (XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(
memoryStream, XmlDictionaryReaderQuotas.Max))
{
DataContractSerializer dcs = new DataContractSerializer(typeof(T));
return (T)dcs.ReadObject(reader);
}
}
}
在服务器上:
public static byte[] SerializeObject<T>(T obj)
{
using (MemoryStream ms = new MemoryStream())
{
using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateBinaryWriter(ms))
{
DataContractSerializer dcs = new DataContractSerializer(typeof(T));
dcs.WriteObject(writer, obj);
writer.Flush();
return ms.ToArray();
}
}
}