2012-03-22 10 views
0

私はデフォルトのDataContractSerializationを採用するWCFサービスをいくつか持っています。いくつかのサービスメソッドはDictionaryオブジェクトを返します。クライアントの1人がWCFサービス(biztalk関連)からXSDファイルを生成しており、すべての辞書タイプをIXmlSerializableを実装する新しい辞書タイプに変換するよう要求しています。 DataContractのシリアル化に何とか影響を及ぼすかもしれない、この変換の予期しない結果があるのだろうか?IXmlSerializableを実装するWCFディクショナリ

更新: サーバーとクライアントは同じドメインDLLを共有しますが、クライアントはサービスから生成しません。たぶん私は主なポイントを逃していた質問で、私はオブジェクトがシリアル化によってdatacontractによってserizalizedされるのだろうかと思います。オブジェクトにIXmlSerializableを実装すると問題が発生します。

答えて

0

予期しない問題があります。ドメインオブジェクトはすでにデータコントラクトのシリアル化を実装しているため、シリアル化メカニズム全体を変更することなくIXmlSerializableを実装する方法はありません。

0

クライアントはサービスとdllを共有していますか?

サービスとライブラリ(dll)を共有していない限り、サービス終了時に変更を加えても差はありません。 WCFはクラスではなくデータを返します。そのデータは、サービスによって返されるWSDLの定義に基づいてクライアントによって作成されるクラスに再構成されます。クライアントとサーバーの間でdllを共有しない限り、生成されたライブラリを制御することはできません(サーバー上でchnagesを作成することによって)。

生成された辞書をIXmlSerializable辞書にラップしたい場合や、別の種類の辞書を生成したい場合は、おそらくこれを行うこともできますが、あなたには何もないと思いますサーバー側を行うことができます。

+0

クライアントとサービスは同じドメインDLLを共有します。たぶん私は主なポイントを逃していた質問で、私はオブジェクトがシリアル化によってdatacontractによってserizalizedされるのだろうかと思います。オブジェクトにIXmlSerializableを実装すると問題が発生します。 – daryal

0

は、彼らがサービスコールからの辞書の結果をシリアル化する必要がある場合は、次のシリアライズ可能な辞書を使用するようにクライアントに教える:C# Serializable Dictionary – a Working Example

コンストラクタ引数は、このように、シリアライズ一つに任意の辞書を変換してそれは普通の辞書を受け入れます。必要に応じて、SerializableDictionaryタイプをサービスコール結果として返すこともできます。

関連する問題