声明包含多个类型的列表

时间:2014-03-31 21:14:38

标签: .net vb.net list inheritance types

我有两个类( 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

限制:

  • 将结构作为继承语句中的类型传递 需要。
  • 使用 CoreType 列表,而不是添加其他内容 继承级别不是一种选择。

我的问题是:如何声明包含 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)......”

0 个答案:

没有答案