我已经习惯于使用接口、泛型并在真实环境中使用继承来开发它们,同时尝试将其用于我们即将进行的项目之一的新架构中,我有一个关于泛型的问题,我对此感到困惑。
这对我自己来说更像是一个教育问题,因为我不明白为什么 .NET 不允许这样做。
如果我有一个泛型类,(Of T As IA, T2 As A)
那么我有以下接口和实现基本接口的类
Public Interface IA
Property A As String
End Interface
Public Interface IB
inherits IA
Property B As String
End Interface
Public Class GenericClass(Of T As IA, T2 As A)
'Should be list of IA?
Public list As New List(Of T)
Public Sub Add()
End Sub
End Class
因为我已经做了T as IA
为什么在add方法Dim foo4 As T = New A()
不合法的时候
Dim foo1 As IA = New A()
Dim foo2 As T
Dim foo3 = Activator.CreateInstance(Of T2)()
Dim x As IA = foo2
Dim y As IA = foo3
list.Add(x)
list.Add(y)
以上都是?这正在成为我使用泛型等的学习曲线,但我只是很困惑为什么我在逻辑上不能这样做?
编辑:抱歉忘记了Class A
,错误信息请见下文
Public Class A
Implements IA
Public Property A As String Implements IA.A
End Class
编辑 2:错误输入错误
“a 类型的值不能转换为 T”