C'è un modo per nascondere / tipi di base Flatten in contratti dati servizio WCF?
-
29-09-2019 - |
Domanda
Si consideri il seguente semplice esempio:
[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 di base di base non ha proprietà di interesse per i consumatori servizio WCF, ma le forze WCF me per annotare anche la classe base con un attributo [DataContract]. Questo dimostra essenzialmente sul client servizio come Employee : EmployeeBase
con EmployeeBase
essendo una classe vuota senza proprietà.
Non voglio esporre la classe Base<T>
al servizio in questo modo, così che cosa sono le opzioni?
- DTO per la classe Employee - Preferirei non aggiungere questa complessità
- "Appiattire" la gerarchia DataContract in modo che il contratto di dati per i dipendenti non espone che eredita da
Base<T>
. È possibile? Come? - Altra soluzione?
Grazie.
Soluzione
Ogni classe in hiearchy deve essere serializzabile / DataContract. Se non si vuole esporre hiearchy è necessario utilizzare DTO o si può provare a implementare IDataContractSuroggate per la classe Employee.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow