Prenons l'exemple simple suivant:Est-il possible de masquer/aplatir les types de base dans les contrats de données de service WCF?
[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 classe de base de base n'a pas de propriétés d'intérêt pour les consommateurs de services WCF, mais WCF me force à annoter aussi la classe de base avec un attribut [DataContract]. Cela apparaît essentiellement sur le client de service comme Employee : EmployeeBase
avec EmployeeBase
étant une classe vide sans propriétés.
Je ne veux pas exposer la classe Base<T>
au service de cette façon, alors quelles sont mes options?
- DTO pour la classe des employés - Je préfère ne pas ajouter cette complexité
- « Aplatir » la hiérarchie DataContract de telle sorte que le contrat de données pour l'employé n'expose pas qu'il hérite de
Base<T>
. Est-ce possible? Comment? - Autre solution?
Merci.
Cela a été d'une grande aide – Arnej65