是否可以返回对象接口的数组而不是对象?

时间:2009-03-04 12:31:47

标签: vb.net web-services interface asmx

我有一个界面,用于描述我的应用程序中的专用列表...

Public Interface IAlphabeticListItem

    Property StartingLetter() As String
    Property DetailsList() As Generic.List(Of DetailsData)

End Interface

多个对象实现了这个接口,但是我希望在Web服务中将它们作为底层对象返回,而不是作为接口。

<WebMethod()> _
Public Function GetCategoryList(...) As Generic.List(Of IAlphabeticListItem)

    ...

End Function

可悲的是,这会导致异常

无法序列化接口IAlphabeticListItem。

异常详细信息:System.NotSupportedException:无法序列化接口IAlphabeticListItem。

有没有办法使接口可序列化,或者我是否必须将每个对象转换为实现接口的具体类,然后返回该类?

2 个答案:

答案 0 :(得分:1)

我现在没时间测试它,但是在C#中你可以扩展接口,所以我想你可以在VB.NET中做到这一点。

让IAlphabeticListItem扩展ISerializable

答案 1 :(得分:1)

是和否。您不能直接公开XML序列化的泛型类,因为它不受支持。但是,您可以在同一个集合上公开非泛型接口并对其进行序列化。这篇博客详细介绍了如何开展这项工作

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