XMLからWCFサービスにパラメーターを渡すときに、DataMemberでOrder属性を使用しないようにするために使用できるものはありますか?
[DataMember(Name = "Name", Order = 2)]
...
[DataMember(Name = "ID", Order = 1)]
...
XMLからWCFサービスにパラメーターを渡すときに、DataMemberでOrder属性を使用しないようにするために使用できるものはありますか?
[DataMember(Name = "Name", Order = 2)]
...
[DataMember(Name = "ID", Order = 1)]
...
いいえ、シリアライザーが期待する順序とは異なる順序でメンバーを渡す場合、Order DataMemberAttribute の使用を避ける方法はありません。
注文のルールは次のとおりです。
http://msdn.microsoft.com/en-us/library/ms729813.aspx
データ順序付けの基本的な規則には、次のものがあります。
- データ コントラクト型が継承階層の一部である場合、その基本型のデータ メンバーが常に最初の順序になります。
- 次に、DataMemberAttribute 属性の Order プロパティが設定されていない現在の型のデータ メンバーがアルファベット順に並べられています。
- 次は、DataMemberAttribute 属性セットの Order プロパティを持つデータ メンバーです。これらは、最初に Order プロパティの値によって並べ替えられ、特定の Order 値のメンバーが複数ある場合はアルファベット順に並べられます。注文値はスキップされる場合があります。
これらのルールに準拠しないメンバーを渡すと、シリアライザーがそれらをスキップするため、null 値が返されます。良くないことはわかっていますが、残念ながらこれが機能する方法です。