WCF DataContract DataMember订单?

Xai*_*oft 20 c# rest wcf

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

}
Run Code Online (Sandbox Code Playgroud)

当我做了以下POST时:

<User>
   <FirstName>abc</FirstName>
   <LastName>123</LastName>
   <Email>email@email.com</Email>
   <Password>pass</Password>
</User>
Run Code Online (Sandbox Code Playgroud)

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

 <User>
   <Email>email@email.com</Email>
   <FirstName>abc</FirstName>
   <LastName>123</LastName>
   <Password>pass</Password>
 </User>
Run Code Online (Sandbox Code Playgroud)

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

Cas*_*jne 48

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

[DataMember(Order = index)]
Run Code Online (Sandbox Code Playgroud)

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

[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; }
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多......