Sí, eso funcionaría.
DataContractAttribute
tiene Inherited
establecido en falso, por lo que es necesario aplicar el atributo a la clase secundaria y a la clase principal (como lo ha hecho en la pregunta).
Necesitará utilizar el atributo
KnownType
si desea utilizar sus contratos de datos con polimorfismo.
Por ejemplo
[ServiceContract]
interface MyWcfContract
{
[OperationContract]
HandleData(ConsoleData contractData);
}
Si ha invocado el método de esta manera:
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);
Entonces el deserializer en el extremo servicio no sabrá que se trata de una instancia de SomeData
, sólo una instancia de ConsoleData
que estaba esperando. La forma de solucionar esto es registrar la clase SomeData
como un tipo conocido del ConsoleData
.
Sí. ¿Qué estás tratando de hacer con esos dos contratos de datos? –