В настоящее время все мои соединения WCF определены в коде, и я пытаюсь использовать сериализацию protobuff-net с небольшим успехом. Ни один из моих контрактов не помечен атрибутом knowntype, поскольку у нас есть базовое сообщение с полезной нагрузкой (это были бы десятки типов 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). Есть ли в любом случае не иметь известных типов, указанных в