javros
javros

Reputation: 823

WCF array datacontract

I have a scheme that looks like

    <?xml version="1.0" ?>        
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="RequestResponseBase" type="RequestResponseBase" />
        <xs:complexType name="RequestResponseBase">
            <xs:sequence>
                <xs:element name="Parameters"
                            type="Parameters">
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="Parameters">
            <xs:sequence>
                <xs:element minOccurs="0"
                            maxOccurs="unbounded"
                            name="Parameter"
                            type="Parameter">
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="Parameter">
            <xs:sequence>
                <xs:element name="Name" type="xs:string" />
                <xs:element name="Value" type="xs:string" />
            </xs:sequence>
        </xs:complexType>
    </xs:schema>

I want to create datacontracts for the types so I've defined the following classes

    public class RequestResponseBase
    {
        public Parameters Parameters { get; set; }
    }


    public class Parameters
    {
        public Parameter[] Parameter { get; set; }
    }

But when I run the service and create a request with soapUI it suggests me to fill the following request:

  <tem:RequestResponseBase>
     <wcf:Parameters>
        <wcf:Parameter>
           <wcf:Parameter>
              <wcf:Name>gero et</wcf:Name>
              <wcf:Value>sonoras imperio</wcf:Value>
           </wcf:Parameter>
        </wcf:Parameter>           
     </wcf:Parameters>
  </tem:RequestResponseBase>

Why Parameter element is wrapped with another Parameter element and how to avoid that?!

Upvotes: 1

Views: 871

Answers (1)

Peter
Peter

Reputation: 27944

What if you change your code to:

public class RequestResponseBase
{
    public Parameter[] Parameters { get; set; }
}

Upvotes: 1

Related Questions