2010-09-28 26 views
20

Là xml được tạo ra từ DataContract của bạn được tạo theo thứ tự bảng chữ cái. Tôi đã một lớp DataContract định nghĩa là:WCF DataContract DataMember thứ tự?

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

} 

Khi tôi đã làm POST sau:

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

Khi tôi đã làm một GET sau khi bài viết của tôi và trở lại kết quả như JSON, email là null, nhưng nếu TÔI BÀI xml của tôi dưới dạng:

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

Email không còn trống khi tôi thực hiện GET và trả về dưới dạng JSON. Tại sao nó làm điều này?

Trả lời

44

trang trí nó với tự Parameter trong lớp DataMemberAttribute:

[DataMember(Order = index)] 

Các phản xạ trong serializer đặt nó theo thứ tự abc. Trừ khi được trang trí như thế này:

[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

Tuyệt vời! Cảm ơn. Điều này rất thú vị. – Xaisoft

Các vấn đề liên quan