Возможность добавления известных типов в конфигурации применяется только к договорам данных, но не к договорам на обслуживание.Если тип, из которого происходит Document
, всегда один и тот же (а не System.Object
), вы можете сделать это, используя опцию конфигурации (больше информации на MSDN ), которая будет выглядеть примерно так:
<configuration>
<system.runtime.serialization>
<dataContractSerializer>
<declaredTypes>
<add type="MyNamespace.DocumentBase, MyAssembly, Version=...">
<knownType type="MyNamespace.Document, MyAssembly, Version=..."/>
</add>
</declaredTypes>
</dataContractSerializer>
</system.runtime.serialization>
</configuration>
Если это не применимо, то другим вариантом будет передать эту опцию конструктору DataContractSerializer
, что можно сделать с помощью некоторого поведения, которое можно применить ко всему сервису.Сообщение о замене DataContractSerializer
на NetDataContractSerializer
является хорошей отправной точкой для вас (вместо замены сериализатора просто верните другой экземпляр DataContractSerializer
, но всегда добавляйте typeof(Document)
к переданным ему известным типам.