通过具有已知类型的代码将protobuf-net序列化添加到WCF

时间:2011-05-23 20:09:07

标签: wcf protobuf-net

我目前已经在代码中定义了所有的WCF连接,并且我试图在没有成功的情况下使用protobuff-net序列化。我的合同都没有标记为knowntype属性,因为我们有一个带有负载的基本消息(它将是几十种已知的类型)。我们找出了我们所拥有的知识类型,并将它们缓存在从DataContractSerializerOperationBehavior派生的类中。然后在重写的CreateSerializer函数中,我将缓存的已知类型传递给DataContractSerializer,如下所示

 public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns,   IList<Type> knownTypes)
 {
          new DataContractSerializer(type, name, ns, m_Known ?? knownTypes, 0x7FFF, ...)
 }

是否有某种方法可以将已知类型列表传递给protobuf-net序列化程序。我意识到protobuf-net并不意味着镜像WCF的序列化器,但是如果它们遵循允许覆盖知识类型列表的模式则会很好。谢谢你的帮助。

但是我没有选择以这种方式处理Protobuf-net序列化程序(我查看了ProtoOperationBehavior)。无论如何都没有

中指定的已知类型

1 个答案:

答案 0 :(得分:1)

在“v2”中,可以在运行时通过.AddSubType(...)动态定义可用的子类型(针对RuntimeTypeModel)(事实上,所有属性现在仅用作类型模型的默认配置,可以任何方式配置。)

但是,我应该强调v2目前处于 beta ,而noted in the blog WCF挂钩目前尚未包含在测试版中,纯粹是在我完成验证等。但是,我希望您在问题中显示的设置应该是微不足道的(仅仅是将模型传递到提供的XmlObjectSerializer实现中的情况。)