Frage

Betrachten Sie das folgende einfache Beispiel:

[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
}

Die Basisklasse Basis hat keine Eigenschaften von Interesse für die WCF-Dienst Verbraucher, sondern WCF zwingt mich auch mit einem [Datacontract] Attribute der Basisklasse mit Anmerkungen versehen. Dies resultierte im Wesentlichen zeigt sich auf dem Service-Client als Employee : EmployeeBase mit EmployeeBase eine leere Klasse ohne Eigenschaften zu sein.

Ich habe nicht die Base<T> Klasse in den Dienst auf diese Weise verfügbar machen möchten, so was sind meine Optionen?

  1. DTO für die Employee-Klasse - ich möchte lieber nicht, diese Komplexität hinzufügen
  2. „Flatten“ die Datacontract Hierarchie, so dass der Datenvertrag für Mitarbeiter aussetzen nicht, dass es von Base<T> erbt. Ist das möglich? Wie?
  3. Andere Lösung?

Danke.

War es hilfreich?

Lösung

Jede Klasse in hiearchy hat serializable / Datacontract sein. Wenn Sie nicht aussetzen hiearchy wollen, müssen Sie DTO verwenden, oder Sie können versuchen, IDataContractSuroggate für Ihre Mitarbeiter Klasse zu implementieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top