我目前已经在代码中定义了所有的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)。无论如何都没有
中指定的已知类型答案 0 :(得分:1)
在“v2”中,可以在运行时通过.AddSubType(...)
动态定义可用的子类型(针对RuntimeTypeModel)(事实上,所有属性现在仅用作类型模型的默认配置,可以任何方式配置。)
但是,我应该强调v2目前处于 beta ,而noted in the blog WCF挂钩目前尚未包含在测试版中,纯粹是在我完成验证等。但是,我希望您在问题中显示的设置应该是微不足道的(仅仅是将模型传递到提供的XmlObjectSerializer
实现中的情况。)