J'ai une interface qui décrit une liste spécialisée dans mon application ...est-il possible de renvoyer un tableau d'objets Interface plutôt que d'un objet?
Public Interface IAlphabeticListItem
Property StartingLetter() As String
Property DetailsList() As Generic.List(Of DetailsData)
End Interface
Plusieurs objets implémentent cette interface, mais je veux les retourner dans un webservice non pas comme l'objet sous-jacent, mais comme l'interface.
<WebMethod()> _
Public Function GetCategoryList(...) As Generic.List(Of IAlphabeticListItem)
...
End Function
Malheureusement, cela provoque une exception
Impossible de sérialiser l'interface IAlphabeticListItem.
Détails de l'exception: System.NotSupportedException: Impossible de sérialiser l'interface IAlphabeticListItem.
Existe-t-il un moyen de rendre sérialisable une interface, ou vais-je devoir convertir chacun de mes objets en une classe concrète implémentant l'interface, puis retourner cette classe?
Pour cela signifierait mise en œuvre GetObjectData (info ByVal comme System.Runtime.Serialization.SerializationInfo, le contexte ByVal comme System.Runtime.Serialization.StreamingContext) Implémente System.Runtime.Serialization.ISerializable.GetObjectData dans chacune de mes autres classes! – digiguru
Si les objets implémentant ces classes sont déjà ISerializable, vous ne devriez rencontrer aucun problème. D'un autre côté, si ce n'est pas le cas, je crains que vous n'ayez besoin d'implémenter l'interface de toute façon, donc cela ne va pas empirer les choses. – rgargente