3

有没有办法使 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 消息时所做的那样?

4

1 回答 1

0

我猜您正在寻找Data Contract Surrogates。顺便说一句,您可以使用 DataContractSerializer 的构造函数来设置命名空间和根名称。

于 2010-05-05T17:14:54.467 回答