VB.无法将类转换为接口
本文关键字:转换 接口 VB | 更新日期: 2023-09-27 18:09:06
我有一段简单的代码,如下所示:
Public Interface ITest(Of T)
Function getObj() As T
End Interface
Public Class clsTest(Of T As {IOrder, New})
Implements ITest(Of T)
Public Function getObj() As T Implements ITest(Of T).getObj
Return New T
End Function
End Class
Public Interface IOrder
Property Name As String
End Interface
Public Class clsOrder
Implements IOrder
Public Property Name As String Implements IOrder.Name
End Class
当我创建一个clsTest对象,如:
Dim test As ITest(Of IOrder) = New clsTest(Of clsOrder)
我得到了以下错误:
ConsoleApplication1。clsTest(Of ConsoleApplication1.clsOrder)'不能转换为"ConsoleApplication1"。它(ConsoleApplication1.IOrder)"。考虑改变单词中的"T"将'Interface test (of T)'定义为Out类型参数'Out 'T"。
有人知道原因吗?如果我确实想将测试声明为ITest(Of IOrder),我该如何使其工作?谢谢。
使用Out
-关键字:
T
中协变Public Interface ITest(Of Out T)
Function getObj() As T
End Interface
然后编译:
Dim test As ITest(Of IOrder) = New clsTest(Of clsOrder)
E。Lippert可以比我解释得更好:
- 实现嵌套的通用接口