Können Sie die Verwendung von Schnittstellen als DataMembers in WCF?
Können Sie dies tun?
[DataContract]
public class RegisterEndpointRequest : NotificationRegistrationServiceRequest
{
[DataMember]
public IEndpoint Endpoint { get; set; }
}
Bemerken, die Mitglied Endpoint ist eine Schnittstelle (IEndpoint
), nicht die Klasse. Wird WCF dies zulassen?
- Ich denke, es wird, solange alles, was aus Beton
IEndpoint
Umsetzung, die Sie für IhreEndpoint
Eigenschaft ist auch verziert mit einemDataContractAttribute
und entsprechendeDataMemberAttribute
s auf seine Mitglieder. EDIT: und was Aasmund sagte über dieKnownTypeAttribute
s.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den datacontractattribute aktivieren im WCF nicht vorgesehen für die Verwendung auf einem interface: Finden Sie in der Dokumentation hier
Den Antwort in dieser Frage kann Ihnen eine bessere Idee warum.
[DataContract]
zu einer Klasse, und[DataMember]
auf eine Eigenschaft.Ich denke, man kann (aber ich habe es noch nicht getestet), aber Sie müssen dann erklären, alle Implementierungen dieser Schnittstelle mit
[KnownType]
:Jede implementierende Klasse muss eine
[DataContract]
Attribut.Ja, natürlich können Sie die Schnittstelle als DataMember-innen DataContract..
Dann müssen Sie angeben, alle interface-Implementierungen in das KnownType-Attribute...