Возможно, стоит проверить вашу потребность в реализации IExtensibleDataObject.Это разработано для прямой совместимости между контрактами данных различных версий, см. Совместимые с форвардными контрактами данных .
Если вы (1) не работаете над сценарием, который требует циклических данных (например, отправка сообщения в службу и его отправка обратно с тем же договором на данные в нем) и (2) не нужно поддерживать клиента, использующего новый договор на данные, отправляющий сообщение службе, которая понимает толькопредыдущая версия контракта на данные, которая затем возвращает сообщение, используя отправленные данные, обратно в новую версию клиента.Хотя это может быть важным сценарием, это не то, что каждый должен поддерживать.Часто обратной совместимости достаточно.И подход IExtensibleDataObject предполагает, что дополнительные данные, содержащиеся в новом контракте данных, могут быть проигнорированы логикой старой службы и просто возвращены вызывающей стороне без изменений.Опять же, это относится к некоторым случаям, а не к другим.В простейшем случае, что заставило бы вас поддерживать новую версию телефонного приложения, возвращающую данные в более старую версию службы?
Если вы не думаете, что вам нужна эта возможность, тогдавозможно, стоит подумать об удалении контракта IExtensibleDataObject из вашего сервиса.
Если вам нужен такой стиль прямой совместимости, тогда другим вариантом будет работа без прокси-серверов, созданных WCF, создание канала, отправка и получение системы..ServiceModel.Channels.Messages и обработайте сообщение SOAP самостоятельно, включая решение, что вы хотите сделать с дополнительными элементами XML, которые не были частью исходного контракта.Определенно сложная тема, но это можно сделать, если вы решите на это.