这应该是直截了当的,但是经过大量论坛浏览后,我仍然没有找到解决方案。开始:
我有一个相当简单的接口定义如下:
[ServiceContract(Namespace = "test-contract")]
public interface IDebitor : Source.BaseInterface.IBase
{
    [OperationContract]
    DebitorResult CreateUpdateDebitorPerson(DebitorPerson person)
}
[DataContract(Namespace = "test-person")]
public class DebitorPerson
{
    #region FIELDS
    // Line
    string senderSystemId;
    string firstName;
    string lastName;
    string address1;
    string address2;
    string postalCode;
    string city;
    string areaCode;
    string cprNumber;
    string payingCustomerId;
    string paymentCode;
    string languageCode;
    #endregion
    #region Propperties
    [DataMember(IsRequired = true, Order = 1)]
    public string SenderSystemId
    {
        get { return senderSystemId; }
        set { senderSystemId = value; }
    }
    [DataMember(IsRequired = true)]
    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }
    [DataMember(IsRequired = true)]
    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }
    [DataMember(IsRequired = true)]
    public string Address1
    {
        get { return address1; }
        set { address1 = value; }
    }
    [DataMember(IsRequired = false)]
    public string Address2
    {
        get { return address2; }
        set { address2 = value; }
    }
    [DataMember(IsRequired = true)]
    public string PostalCode
    {
        get { return postalCode; }
        set { postalCode = value; }
    }
    [DataMember(IsRequired = true)]
    public string City
    {
        get { return city; }
        set { city = value; }
    }
    [DataMember(IsRequired = true)]
    public string AreaCode
    {
        get { return areaCode; }
        set { areaCode = value; }
    }
    [DataMember(IsRequired = true)]
    public string CprNumber
    {
        get { return cprNumber; }
        set { cprNumber = value; }
    }
    [DataMember(IsRequired = false)]
    public string PayingCustomerId
    {
        get { return payingCustomerId; }
        set { payingCustomerId = value; }
    }
    [DataMember(IsRequired = true)]
    public string PaymentCode
    {
        get { return paymentCode; }
        set { paymentCode = value; }
    }
    [DataMember(IsRequired = false)]
    public string LanguageCode
    {
        get { return languageCode; }
        set { languageCode = value; }
    }
    #endregion
}
该服务运行得很好,但相应的soap xml不是我所期望的。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:test="test-contract" xmlns:test1="test-person">
   <soapenv:Header/>
   <soapenv:Body>
      <test:CreateUpdateDebitorPerson>
         <!--Optional:-->
         <test:person>
            <test1:Address1></test1:Address1>
            <!--Optional:-->
            <test1:Address2></test1:Address2>
            <test1:AreaCode></test1:AreaCode>
            <test1:City></test1:City>
            <test1:CprNumber></test1:CprNumber>
            <test1:FirstName></test1:FirstName>
            <!--Optional:-->
            <test1:LanguageCode></test1:LanguageCode>
            <test1:LastName></test1:LastName>
            <!--Optional:-->
            <test1:PayingCustomerId></test1:PayingCustomerId>
            <test1:PaymentCode></test1:PaymentCode>
            <test1:PostalCode></test1:PostalCode>
            <test1:SenderSystemId></test1:SenderSystemId>
         </test:person>
      </test:CreateUpdateDebitorPerson>
   </soapenv:Body>
</soapenv:Envelope>
为什么元素属于测试合同而不是接口中定义的测试人员?有人可以帮我吗?