我一直在尝试将 protobuf-net 与 MonoTouch 一起使用,但我不知道如何使用,尽管听说这是可能的,但我还没有找到任何教程或任何实际有效的示例。
马克·格拉维尔证实了这一消息在他的博客上 http://marcgravell.blogspot.com/2010/02/protobuf-net-v2-on-iphone.html它确实可以在 MonoTouch 上运行。我也翻阅了他在这篇文章中所说的两个人的博客,但没有找到任何与protobuf相关的内容。
由于没有关于这个主题的线索,我决定下载 protobuf-net 并尝试一下。所以我创建了以下对象用于测试目的:
[ProtoContract]
public class ProtoObject
{
public ProtoObject()
{
}
[ProtoMember(1)]
public byte[] Bytes { get; set; }
}
我尝试使用 Windows 上运行的服务通过 WCF 发送它[ServiceContract]
与接口
[OperationContract]
ProtoObject GetObject();
但设备上接收到的 Proto Object 实例始终为 null。这并不意外,因为我读过要使 protobuf-net 与 WCF 一起工作,您需要修改app.config/web.config http://marcgravell.blogspot.com/2009/11/controlling-wcf-protobuf-net-at.html.
由于 MonoTouch 项目没有 app.config,所以完成起来有点困难,但我还没有放弃。为了替换 app.config,我尝试以编程方式将 ProtoEndpointBehavior 添加到客户端端点的行为中,但遇到了困难。 ProtoBuf.ServiceModel.ProtoEndpointBehavior,在 .NET 3.0 上可用,protobuf-net 的实现在 iOS 版本上不可用。
我将如何使用 protobuf-net 来反序列化使用 protobuf-net 序列化从基于 Windows 的 WCF 端点接收的对象。