2

私は WCF サービス (.NET4.0) を持っています。クライアントは .NET2.0 です。クライアントからサービスに渡される列挙値は、常に列挙型の既定値 (最初の列挙型メンバー) で設定されます。

これは .NET2.0 の問題ですか? 回避策はありますか?

4

1 に答える 1

2

<FieldName>Specified は、XmlSerializer によって使用される機能です。私は以前これに刺されました。誰もが同じようにつらい方法でこの機能について知っているようです。

あなたが言うように、これが false に設定されている場合、フィールドはシリアル化されません。残念ながら、ブール値フィールドのデフォルトは false であるため、設定を忘れると非常に面倒です。

この機能が気に入らない場合は、<FieldName>Specified フィールドを削除するだけで問題ありません。その後、フィールドは常にシリアル化されます。

これらのフィールドは、.NET 2 で XmlSerializer を使用しているため、違いを生むだけです。.NET 4 WCF アプリでは、この機能を持たない DataContractSerializer を使用しています。

列挙型の既定値は、実際には WCF によって受信されません。その列挙型のサーバーでは実際には何も受信されません。したがって、列挙型は設定されないため、デフォルト値のままです。

于 2012-01-17T23:35:27.980 に答える