WCF DataContract DataMember订单?

是否按字母顺序创建了从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; } } 

当我做了以下POST时:

  abc 123 email@email.com pass  

当我在发布后进行GET并将结果作为JSON返回时,电子邮件为空,但如果我将我的xml发布为:

   email@email.com abc 123 pass  

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

使用DataMemberAttribute类中的Order Parameter装饰它:

 [DataMember(Order = index)] 

串行器中的reflection器按字母顺序排列。 除非像这样装饰:

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

在这里阅读更多……