【问题标题】:WCF DataContract DataMember order?WCF DataContract DataMember 命令?
【发布时间】:2010-09-28 19:48:01
【问题描述】:

是从按字母顺序创建的 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 时:

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

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

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

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

【问题讨论】:

    标签: c# wcf rest


    【解决方案1】:

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

    Read more here...

    【讨论】:

    • 太棒了!谢谢。这很有趣。
    猜你喜欢
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2012-01-23
    • 2016-11-04
    相关资源
    最近更新 更多