Сериализация MessageContract с DCS - PullRequest
3 голосов
/ 05 мая 2010

Есть ли способ заставить сериализовать DataContractSerializer [MessageContract] так же, как при передаче через SOAP?

У меня есть класс, который выглядит следующим образом на проводе для вызова WCF: <TestRequest xmlns="http://webservices.test.com/ServiceTest/1.1"> <Name>Just Me</Name> </TestRequest>

При сериализации с использованием DCS это выглядит так: <TestRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.datacontract.org/2004/07/ServiceTest"> <_x003C_Name_x003E_k__BackingField z:Id="2">Just Me</_x003C_Name_x003E_k__BackingField> </TestRequest>

Я убежден, что это несоответствие связано с тем, что мой класс размечен как контракт сообщений, а не контракт данных: [MessageContract] [Serializable] public class TestRequest { [MessageBodyMember] public string Name { get; set; } }

Есть ли способ заставить сериализовать сообщения DCS так же, как это делает WCF при создании сообщения SOAP?

1 Ответ

0 голосов
/ 05 мая 2010

Полагаю, вы ищете Суррогаты контрактов на данные . Кстати, вы можете использовать конструктор DataContractSerializer для установки пространства имен и корневого имени.

...