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?

Foi útil?

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

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

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top