【问题标题】:Pass sub generic type to function need base generic type not working将子泛型类型传递给函数需要基本泛型类型不起作用
【发布时间】:2018-04-03 03:45:46
【问题描述】:

我尝试将泛型类型传递给 sub ,但出现错误。

我用基类约束然后通过子类而不工作,我误解了吗?

主要:

Private Sub GenericTypeTest_Load
    Dim tA As New TypeA
    Dim tCon As New TypeContainer(of TypeA)
    subTest(tCon)    'error here
End Sub

类:

Public Class TypeBase
End Class

Public Class TypeA : Inherits TypeBase
End Class

Public Class TypeContainer(of T As {TypeBase, New})
End Class

错误信息:

类型 TypeContainer(Of TypeA) 无法转换为 TypeContainer(Of TypeBase)

哦,谢谢你的帮助,对不起我的英语和电话排版不好。

【问题讨论】:

  • 根据您在subTest 中所做工作的详细信息,您或许可以使用协变接口。在联机 Visual Basic 帮助中查找 Out 关键字。另外,想想subTest是否需要带TypeContainer的参数,或者是否可以改为IEnumerable(Of TypeBase);如果是后者,IEnumerable(Of T)T 中已经是协变的。

标签: vb.net class generics


【解决方案1】:

TypeA 继承 TypeBase 并不意味着 TypeContainer(Of TypeA) 继承 TypeContainer(Of TypeBase)。只能将参数传递给subTest,即继承或实现参数的类型。

显示subTest的声明,也许我可以更具体。

【讨论】:

    猜你喜欢
    • 2019-03-05
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多