WCF DataContract DataMember order?

Is the xml that is created from your DataContract created in alphabetical order. I have a DataContract class defined as:

[DataContract(Name = "User", Namespace = "")]
public class User
{
    [DataMember]
    public string FirstName { get; set; }
    [DataMember]
    public string LastName { get; set; }
    [DataMember]
    public string Email { get; set; }
    [DataMember]
    public string Password { get; set; }

}

When I did the following POST:

<User>
   <FirstName>abc</FirstName>
   <LastName>123</LastName>
   <Email>email@email.com</Email>
   <Password>pass</Password>
</User>

When I did a GET after my post and returned the result as JSON, email was null, but if I POST my xml as:

 <User>
   <Email>email@email.com</Email>
   <FirstName>abc</FirstName>
   <LastName>123</LastName>
   <Password>pass</Password>
 </User>

Email is no longer null when I do a GET and return it as JSON. Why is it doing this?

Answers


decorate it with the Order Parameter in the DataMemberAttribute class:

[DataMember(Order = index)]

The reflector in the serializer puts it alphabetically. Unless when decorated like this:

[DataMember(Order = 0)]
public string FirstName { get; set; }
[DataMember(Order = 1)]
public string LastName { get; set; }
[DataMember(Order = 2)]
public string Email { get; set; }
[DataMember(Order = 3)]
public string Password { get; set; }

Read more here...


Need Your Help

Should I expose IObservable<T> on my interfaces?

c# .net system.reactive

My colleague and I have dispute. We are writing a .NET application that processes massive amounts of data. It receives data elements, groups subsets of them them into blocks according to some crite...

FileInfo.MoveTo() vs File.Move()

c# .net file-io

Is there any difference between these two methods of moving a file?