Share via


Serialization magic with DataContract attribute in WCF

I want to serialize something similar to this format:

<Body>

      <Response>

                     <something></something>

      </Response>

</Body>

 

I have the following code:

 

[MessageContractAttribute(IsWrapped=false)]

public class Response

{

    [MessageBodyMember(Name = "Response", Namespace="https://tempuri.org", Order=0)]

    public ResponseBody body;

}

 

[DataContract(Namespace="https://tempuri.org")]

public class ResponseBody

{

    public ResponseBody(XmlNode[] s)

    {

        this.c = s;

    }

 

    [DataMember(EmitDefaultValue=false, Order=0)]

    public XmlNode[] c;

}

 

However, the code above would generate

 

<Body>

<Response>

<c>

<something></something>

</c>

</Response>

</Body>

In order to get rid of the extra element c, what i have to do is to define one class instead of two.

[MessageContractAttribute(IsWrapped=false)]

public class Response

{

[MessageBodyMember(Name = "Response", Namespace="https://tempuri.org", Order=0)]

public XmlNode[] c;

}

Hope it helps.