¿Hay alguna manera de ocultar los tipos base / aplanada de contratos de datos de servicio WCF?
-
29-09-2019 - |
Pregunta
Considere el siguiente ejemplo:
[DataContract("{0}Base")]
public class Base<T> where T : Entity<T>
{
// Common methods & properties. No WCF exposed properties
}
[DataContract]
public class Employee : Base<Employee>
{
// WCF exposed properties
}
La clase base Base no tiene propiedades de interés para los consumidores de servicios WCF, WCF, pero me obliga a anotar también la clase base con un atributo [DataContract]. Esto demuestra esencialmente en el cliente de servicios como Employee : EmployeeBase
con EmployeeBase
siendo una clase vacía sin propiedades.
No quiero exponer a la clase Base<T>
al servicio de esta manera, por lo que ¿cuáles son mis opciones?
- DTO para la clase de empleado - prefiero no añadir esta complejidad
- "Aplanar" la jerarquía DataContract para que el contrato de datos para el empleado no expone que hereda de
Base<T>
. es posible? ¿Cómo? - Otro solución?
Gracias.
Solución
Cada clase en hiearchy tiene que ser serializable / DataContract. Si no desea exponer hiearchy usted tiene que utilizar DTO o puede tratar de implementar IDataContractSuroggate para su clase de empleado.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow