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ではなくなりました。なぜこれをしているのですか?
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; }