汎用オブジェクトを渡すことは可能ですか(汎用では、DataContract
で、C#汎用コレクションではありません)、1つのルートから継承しないでください。私はこのような何かを持っている現時点では:WCFを介して汎用オブジェクトを渡す方法
[OperationContract]
void Save(GenericObject o);
[DataContract]
[KnownType(typeof(ClassA))]
[KnownType(typeof(ClassB))]
class GenericObject {....
[DataContract]
class ClassA: GenericObject {....
[DataContract]
class ClassB: GenericObject {....
すべてがOKだったが、プロジェクトが大きくなっていると私は本当に1クラスからのすべてのそれらの契約を導出する余裕はありません。
サービスに特殊なメソッドを追加したくありません。 回避策として、クラスを手動でDataContractSerializerを介して文字列またはバイト[]にシリアル化し、サーバー側でそれらを逆シリアル化することができます。void Save(byte [] serializedObject)
私は簡単に一般的なオブジェクトを返すことができます。 オブジェクトロード(文字列ID) はうまく動作しますが、保存(オブジェクトo)は動作しません。
私はクライアントとしてSilverlightを使用しています。
以下のような回答があります。さらに詳しい情報が必要な場合は、ClassA、ClassB、およびGenericObjectの外観について理解を深めることができます。なぜClassA/B/Cなどではなく汎用オブジェクトを渡したいのですか? – Cheeso
私は、仮想ファイルシステムに格納されている膨大なオブジェクト(ClassA/B/C)を持っているので、汎用オブジェクトを渡したいデータベースの。したがって、私はそれらを格納/取得するために2つのメソッドを使用しています:Save()/ Load()とSaveClassA/SaveClassB/SaveClassCではなく、全く同じシグネチャ(タイプとは別)。 –