はい、それは動作します。
DataContractAttribute
はInherited
がfalseに設定されているため、(この質問で行ったように)子クラスと親クラスの両方に属性を適用する必要があります。
多態性を持つデータコントラクトを使用する場合は、
KnownType
属性を使用する必要があります。
あなたがそうのようなメソッドを呼び出した場合
[ServiceContract]
interface MyWcfContract
{
[OperationContract]
HandleData(ConsoleData contractData);
}
例えば:
SomeData someData = new SomeData { Description = "Test", Volume = 30 };
// The method is expecting a ConsoleData instance,
// I'm passing a SomeData instance instead
myWcfProxy.HandleData(someData);
そして、サービス側のデシリアライザは、それがSomeData
のインスタンスだとConsoleData
のインスタンスだけを知ることができませんそれは期待していた。 これを解決する方法は、の既知のタイプとしてSomeData
クラスを登録することです。
はい。あなたはこれら2つのデータ契約で何をしようとしていますか? –