Ich habe eine Schnittstelle, die eine spezielle Liste in meiner Anwendung beschreibt ...ist es möglich, ein Array von Objekt Interfaces und nicht ein Objekt zurückzugeben?
Public Interface IAlphabeticListItem
Property StartingLetter() As String
Property DetailsList() As Generic.List(Of DetailsData)
End Interface
Mehrere Objekte diese Schnittstelle implementieren, aber ich mag, dass sie in einem Webservice zurück nicht als das zugrunde liegende Objekt, sondern als Schnittstelle.
<WebMethod()> _
Public Function GetCategoryList(...) As Generic.List(Of IAlphabeticListItem)
...
End Function
Leider bewirkt dies eine Ausnahme
nicht Schnittstelle IAlphabeticListItem serialisiert werden kann.
Ausnahmedetails: System.NotSupportedException: Die Schnittstelle IAlphabeticListItem kann nicht serialisiert werden.
Gibt es eine Möglichkeit, eine Schnittstelle serialisierbar zu machen, oder muss ich jedes meiner Objekte in eine konkrete Klasse konvertieren, die die Schnittstelle implementiert, und dann diese Klasse zurückgeben?
dies bedeutet Dies würde Implementierung GetObjectData (ByVal info Als System.Runtime.Serialization.SerializationInfo, ByVal Kontext Wie System.Runtime.Serialization.StreamingContext) Implementiert System.Runtime.Serialization.ISerializable.GetObjectData in jeder meiner anderen Klassen! – digiguru
Wenn die Objekte, die diese Klassen implementieren, bereits ISerializable sind, sollten Sie keine Probleme haben. Auf der anderen Seite, wenn sie nicht sind, müssen Sie die Schnittstelle sowieso implementieren, so wird es nicht schlimmer machen. – rgargente