Ich muss einen komplexen Typ von einem Webservice zurückgeben und hatte die Klasse MyComplexType, die die Schnittstelle IMyComplexType implementiert, erstellt. Jetzt in meinem Webservice habe ich eine Methode, die ein Objekt zurückgeben soll, die IMyComplexType implementiert wie so:Kann man Schnittstellen von .net Webservices zurückgeben oder kann man nur konkrete Klassen zurückgeben?
[WebMethod]
public IMyComplexType GetMyComplexType()
{
IMyComplexType myCt = new MyComplexType();
...
return myCt;
}
Alles kompiliert in Ordnung, aber wenn ich den Webservice laufen wirft es eine Ausnahme wie folgt:
System.NotSupportedException: Cannot serialize interface MyWebService.IMyComplexType.
Ist das ist Design oder ich vermisse etwas. Kann ich meine Klasse oder mein Interface irgendwie so dekorieren? Muss ich alle Schnittstellen eliminieren und nur mit konkreten und vielleicht abstrakten Basisklassen arbeiten, um dies mit .net Webservices tun zu können?
Edit:
das ist die Schnittstelle I zu serialisiert versuche:
public interface ICustomer
{
long Id {get; set;}
string Name {get; set;}
string EmailAddress {get; set;}
}
Dies erfordert wiederum, dass ich die ISerializable-Schnittstelle in allen meinen Klassen implementiere - während ich hoffte, in der Lage zu sein, zu serialisieren, ohne das zu tun. Ich brauche nur die öffentlichen Eigenschaften. Die Schnittstellen zu entfernen und nur die konkreten Klassen zu verwenden funktioniert gut, aber ist das eine Best-Practice? – Fadeproof