C# WCF数据合同数据成员订单?

C# WCF数据合同数据成员订单?,c#,wcf,rest,C#,Wcf,Rest,是根据DataContract创建的xml,按字母顺序创建。我有一个DataContract类,定义为: [DataContract(Name = "User", Namespace = "")] public class User { [DataMember] public string FirstName { get; set; } [DataMember] public string LastName { get; set; } [DataMembe

是根据DataContract创建的xml,按字母顺序创建。我有一个DataContract类,定义为:

[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; }

}
当我发布以下帖子时:

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

abc
123
email@email.com
通过
当我在我的帖子后进行GET并将结果返回为JSON时,电子邮件为空,但如果我将xml发布为:

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

email@email.com
abc
123
通过

当我执行GET并将其作为JSON返回时,电子邮件不再为空。它为什么要这样做?

用DataMemberAttribute类中的Order参数装饰它:

[DataMember(Order = index)]
序列化程序中的反射器按字母顺序排列。 除非像这样装饰:

[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; }

太好了!谢谢这很有趣。