1

XMLからWCFサービスにパラメーターを渡すときに、DataMemberでOrder属性を使用しないようにするために使用できるものはありますか?

[DataMember(Name = "Name", Order = 2)]
...
[DataMember(Name = "ID", Order = 1)]
...
4

1 に答える 1

2

いいえ、シリアライザーが期待する順序とは異なる順序でメンバーを渡す場合、Order DataMemberAttribute の使用を避ける方法はありません。

注文のルールは次のとおりです。

http://msdn.microsoft.com/en-us/library/ms729813.aspx

データ順序付けの基本的な規則には、次のものがあります。

  • データ コントラクト型が継承階層の一部である場合、その基本型のデータ メンバーが常に最初の順序になります。
  • 次に、DataMemberAttribute 属性の Order プロパティが設定されていない現在の型のデータ メンバーがアルファベット順に並べられています。
  • 次は、DataMemberAttribute 属性セットの Order プロパティを持つデータ メンバーです。これらは、最初に Order プロパティの値によって並べ替えられ、特定の Order 値のメンバーが複数ある場合はアルファベット順に並べられます。注文値はスキップされる場合があります。

これらのルールに準拠しないメンバーを渡すと、シリアライザーがそれらをスキップするため、null 値が返されます。良くないことはわかっていますが、残念ながらこれが機能する方法です。

于 2013-05-14T09:37:21.870 に答える