2

残りのインターフェイスから xml ドキュメントを取得する簡単なテスト アプリがあります。データ要素には、いくつかの文字列フィールドといくつかのブール フィールドがあります。単純なエンティティ クラスを作成し、それに DataContractAttribute を配置してから、DataMemberAttributes を各データ メンバーに追加しました。次に、HttpResponseMessage.Content.ReadAsDataContract() を使用して応答を解析します。すべての文字列型は正常に処理されますが、ブール型はすべて false です (実際には false ではありません)。xml 要素は次のようなものです。

<is-enabled type="boolean">true</is-enabled>

そして、私の型クラスには次のようなものがあります:

[DataMember(Name="is-enabled")]
public bool isEnabled
{
    get
    {
        return this.isEnabledField;
    }
    set
    {
        this.isEnabledField = value;
    }
    }

ブール値を適切に取得するにはどうすればよいですか?

4

2 に答える 2

1

信じられないかもしれませんが、DataContractSerializerは、逆シリアル化されるXMLドキュメント内の要素の順序に敏感です。DataMemberAttributeのOrderプロパティを、その親要素の他の子の中で「is-enabled」の実際の位置と一致するように設定する必要があるに違いありません。

于 2010-06-19T04:56:36.253 に答える
0

うまくいくはずですが...最初に試みることは、データメンバー名からダッシュ「-」を削除することです。(デ) シリアライザーが内部でダッシュを詰まらせており、正しいメンバーにマッピングされていないため、デフォルトの bool 値が false になっている可能性があります。

後で複合変数名を読みやすくする必要がある場合は、アンダースコアを試してください。

于 2009-10-20T03:04:12.757 に答える