0

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

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。

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

4

2 回答 2

1

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

只需让 IAlphabeticListItem 扩展 ISerializable

于 2009-03-04T12:43:48.450 回答
1

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

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

于 2009-03-07T20:38:30.237 回答