é possível retornar um array de objeto interface é em vez de um objeto?
-
03-07-2019 - |
Pergunta
Eu tenho uma interface que descreve uma lista especializada na minha candidatura ...
Public Interface IAlphabeticListItem
Property StartingLetter() As String
Property DetailsList() As Generic.List(Of DetailsData)
End Interface
Vários objetos implementar essa interface, mas quero devolvê-los em um webservice não como o objeto subjacente, mas como a interface.
<WebMethod()> _
Public Function GetCategoryList(...) As Generic.List(Of IAlphabeticListItem)
...
End Function
Infelizmente, isso faz com que uma exceção
não pode serialize interface de IAlphabeticListItem.
Exceção detalhes: System.NotSupportedException:. Não é possível serialize interface de IAlphabeticListItem
Existe uma maneira de fazer uma serializável interface, ou eu vou ter que converter cada um dos meus objetos em uma classe concreta que implementa a interface, e depois voltar essa classe?
Solução
Sim e não. Você não pode expor diretamente a classe genérica para serialização XML porque não é suportado. No entanto, pode expor uma interface não genérica sobre a mesma coleção e serializar isso. Este blog entra em grandes detalhes sobre como fazer este trabalho
Outras dicas
Eu não tenho tempo para testá-lo agora, mas em C # você pode estender as interfaces, então eu suponho que você pode fazer isso em VB.NET.
Apenas certifique IAlphabeticListItem estender ISerializable