2010-09-28 78 views
20

是从您的DataContract按字母顺序创建的xml。我有一个DataContract类定义为:WCF DataContract DataMember顺序?

[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:

<User> 
    <FirstName>abc</FirstName> 
    <LastName>123</LastName> 
    <Email>[email protected]</Email> 
    <Password>pass</Password> 
</User> 

当我做了一个让我的职务后,返回JSON作为结果,电子邮件是空的,但如果我张贴我的xml为:

<User> 
    <Email>[email protected]</Email> 
    <FirstName>abc</FirstName> 
    <LastName>123</LastName> 
    <Password>pass</Password> 
</User> 

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

回答

44

与所述DataMemberAttribute类订单参数装饰它:

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

Read more here...

+0

太好了!谢谢。这非常有趣。 – Xaisoft 2010-09-28 20:23:05