Est-il possible de se cacher / Aplatir types de base dans les contrats de données de service WCF?
-
29-09-2019 - |
Question
Prenons l'exemple simple suivant:
[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 les forces WCF me annoter aussi la classe de base avec un attribut [DataContract]. Cela montre essentiellement sur le client de service comme étant Employee : EmployeeBase
avec EmployeeBase
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.
La solution
Chaque classe hiearchy doit être sérialisable / DataContract. Si vous ne voulez pas exposer hiearchy vous devez utiliser DTO ou vous pouvez essayer de mettre en œuvre IDataContractSuroggate pour votre classe d'employés.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow