单例对象和子类
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})
我有一个名为 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})