Est-il possible de se cacher / Aplatir types de base dans les contrats de données de service WCF?

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

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

  1. DTO pour la classe des employés - je préfère ne pas ajouter cette complexité
  2. « 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?
  3. Autre solution?

Merci.

Était-ce utile?

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