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?

War es hilfreich?

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

http: / /srtsolutions.com/blogs/billwagner/archive/2006/11/20/xml-serialization-and-generic-interfaces.aspx

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

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