单例对象和子类

Singleton object and subclasses

我有一个名为 dRow 的 class,其中包含一些数据。我有许多 dRow、AccountRow、PageRow 等的子classes。它们的区别仅在于代码。现在我想给 dRow 添加一个单例...

Protected Shared EmptyRow as dRow

EmptyRow 是一个不包含数据的 dRow 实例。下面是这个...

Public Function EmptyRow() as dRow...

现在的问题...我需要 AccountRow 到 return EmptyRow 作为 AccountRow,而不是 dRow...

Friend Function EmptyRow() as AccountRow...

DirectCast 不起作用,方向错误。 看起来 我必须为每个子class?

设置一个单独的 EmptyRow

有什么办法可以避免这种命运吗?

泛型可能有效。您是在创建 dRow 的实例还是仅用作基础 class?如果它只是一个基础 class(可能有 MustInherit 关键字),那么尝试这样的事情:

MustInherit Class dRow(Of T As New)
    Protected Shared _emptyRow As New T

    Public Shared Function EmptyRow() As T
        Return _emptyRow
    End Function

End Class

Class AccountRow 
    Inherits dRow(Of AccountRow)

End Class

Class PageRow
    Inherits dRow(Of PageRow)

End Class

EmptyRow 函数现在 return subclass 类型的单例实例。

您甚至可以像这样添加进一步的通用类型约束,以确保子 classes 仅使用 dRow 的实例作为它们的类型。

MustInherit Class dRow(Of T As {dRow(Of T), New})

https://msdn.microsoft.com/en-us/library/w256ka79.aspx