ist es möglich, eine Reihe von Objekt Interface anstatt ein Objekt zurück?
-
03-07-2019 - |
Frage
Ich habe eine Schnittstelle, die eine spezielle Liste in meiner Anwendung beschreibt ...
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
Kann nicht Schnittstelle IAlphabeticListItem serialisiert.
Ausnahmedetails: System.NotSupportedException:. Kann nicht Schnittstelle IAlphabeticListItem serialisiert
Gibt es eine Möglichkeit eine Schnittstelle serializable zu machen, oder werde ich jedes meiner Objekte in eine konkrete Klasse zu konvertieren haben die Schnittstelle implementiert, und dann diese Klasse zurückgeben?
Lösung
Ja und nein. Sie können nicht direkt auf die generische Klasse für die XML-Serialisierung aus, da diese nicht unterstützt wird. Sie können jedoch eine nicht-generische Schnittstelle auf der gleichen Sammlung aussetzen und serialisiert werden. Dieser Blog geht sehr ins Detail, wie diese Arbeit machen
Andere Tipps
Ich habe keine Zeit, es zu testen, gerade jetzt, aber in C # können Sie Schnittstellen erweitern, so nehme ich an, dass in VB.NET tun können.
So stellen IAlphabeticListItem ISerializable verlängern