web-dev-qa-db-ja.com

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を行ったとき:

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

投稿後にGETを実行し、結果をJSONとして返したとき、電子メールはnullでしたが、POST my xml as:

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

GETを実行してJSONとして返すときに、Eメールがnullではなくなりました。なぜこれをしているのですか?

23
Xaisoft

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

詳細はこちら...

52
Caspar Kleijne