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?

  1. DTO per la classe Employee - Preferirei non aggiungere questa complessità
  2. "Appiattire" la gerarchia DataContract in modo che il contratto di dati per i dipendenti non espone che eredita da Base<T>. È possibile? Come?
  3. Altra soluzione?

Grazie.

È stato utile?

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