我有两个类( TypeA , TypeB ),所有这些类都继承自基类( BaseType )并希望拥有包含每个类的任意数量的列表。
我环顾四周,找到了一些接近的答案,但我不能让他们为我的情况工作。
我有三个级别的继承:
‘CoreType is used all over my program as the base for almost every other class, so I would like to avoid changing it if at all possible.
Public Class CoreType(Of T)
End Class
Public Class BaseType(Of T)
Inherits CoreType(Of T)
End Class
Public Class TypeA
Inherits BaseType(Of StructA)
Public Property SomeA() As String
End Class
Public Class TypeB
Inherits BaseType(Of StructB)
Public Property SomeB() As String
End Class
Public Structure StructA
End Structure
Public Structure StructB
End Structure
Module Module1
Sub Main()
Dim a As New List(Of BaseType(Of ???))
a.Add(New TypeA)
a.Add(New TypeB)
If a.First().GetType().Name = TypeName(New StructA) Then
Dim x As Integer = 5
End If
End Sub
End Module
限制:
我的问题是:如何声明包含 TypeA 和 TypeB 的列表?
我认为问题涉及我试图声明 BaseType 列表的方式,因为它需要传递给它的类型*,但我无法弄清楚如何将它传递给它因为它还没有被宣布。
这里有一个接近的解决方案:Single sorted c# list with different types?遗憾的是我无法弄清楚如何调整它以便它采用通用T。
*传递类型的意思的例子:
Public Function GetStuff(Of T)() As List(Of BaseType(Of T))
End Function
我能够将T传递给BaseType,因为我之前在函数定义中声明了它:“... GetStuff(Of T)......”