, что является неправильным использованием IExtensibleDataObject. Вы изменили контракт данных на стороне сервера и пометили новое поле как обязательное, что означает, что вы нарушили управление версиями, и ничто не поможет вам.
IExtensibleDataObject предназначен для других целей. Предположим, что вы изменили свой клиент так, чтобы контракт данных на клиенте содержал MiddleName. Теперь вы устанавливаете MiddleName и используете операцию добавления сервиса. Какое значение MiddleName будет в возвращенном объекте Employee? Если вы не используете IExtensibleDataObject, значение будет равно нулю, если вы используете IExtensibleDataObject, значение будет таким же, как для параметра ввода.
При использовании DataContractSerializer WCF выбрасывает все непонятные параметры. IExtensibleDataObject позволяет избежать этого, сохраняя все эти параметры в специальной коллекции и отправляя их обратно клиенту.
Если вы хотите использовать контрактное управление версиями, забудьте о необходимых полях. Это первое, что сломает его.
С наилучшими пожеланиями,
Ладислав