WCFでSilverlightを使用しています。サーバーに送信したいかなり複雑なオブジェクトがあります。このオブジェクトは複数のサービス間で共有されるため、データコントラクトにすることはできません。自分でシリアル化する簡単な方法があるのではないかと思います。.Net 4(サーバー側)とSilverlight 4(クライアント側)の両方で機能する方法。
注意してください、私はRIAサービスを使用していません。なぜなら、RIAサービスは、使用を開始して以来、私の側に大きな苦痛を与えてきたからです。
編集:
私はとを使用しようとしましたがDataContractAttribute
、DataMemberAttribute
役に立ちませんでした。サービスから次の例外が発生します。
System.IO.FileNotFoundException:ファイルまたはアセンブリ'System.Runtime.Serialization、Version = 2.0.5.0、Culture = neutral、PublicKeyToken=7cec85d7bea7798e'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。ファイル名:'System.Runtime.Serialization、Version = 2.0.5.0、Culture = neutral、PublicKeyToken = 7cec85d7bea7798e'
その理由は明らかなようです。POCOを含むDLLがSilverlightクラスライブラリであるためだと思います。これは、WCFサービスとSilverlightクライアントの両方の間でオブジェクトを共有することを私が知っている唯一の方法です。問題は、Silverlight DLLがSilverlightバージョンを使用しているSystem.Runtime.Serialization
ため、POCOをSilverlight以外の環境で使用できないことです。このPOCOを複数のサービス間で共有する必要があるため、別のアセンブリに存在する必要があります。
これが、オブジェクトのシリアル化方法を制御したい理由です。オブジェクト自体の内部でそれらをシリアル化します。