¿Hay alguna manera de ocultar los tipos base / aplanada de contratos de datos de servicio WCF?

StackOverflow https://stackoverflow.com/questions/3499788

  •  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?

  1. DTO para la clase de empleado - prefiero no añadir esta complejidad
  2. "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?
  3. Otro solución?

Gracias.

¿Fue útil?

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
scroll top