Sì, che avrebbe funzionato.
Il DataContractAttribute
ha Inherited
impostato su falso, quindi è necessario applicare l'attributo sia alla classe figlio che alla classe genitore (come è stato fatto nella domanda).
È necessario utilizzare l'attributo
KnownType
se si desidera utilizzare i contratti di dati con il polimorfismo.
Per esempio
[ServiceContract]
interface MyWcfContract
{
[OperationContract]
HandleData(ConsoleData contractData);
}
Se è stato richiamato il metodo in questo modo:
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);
Poi il deserializzatore sulla fine servizio non sapere che è un esempio di SomeData
, solo un'istanza di ConsoleData
che si aspettava. Il modo per risolvere questo problema è registrare la classe SomeData
come un tipo noto di ConsoleData
.
fonte
2011-12-18 22:12:26
Sì. Cosa stai cercando di fare con questi due contratti di dati? –