我有一个名为dRow的类,它包含一些数据。我有许多dRow,AccountRow,PageRow等子类。它们只在代码中有所不同。现在我想给dRow添加一个单身......
Protected Shared EmptyRow as dRow
EmptyRow是dRow的一个实例,它不包含任何数据。就在下面就是这个......
Public Function EmptyRow() as dRow...
现在问题......我需要AccountRow将EmptyRow作为AccountRow返回,而不是dRow ...
Friend Function EmptyRow() as AccountRow...
DirectCast不起作用,这是错误的方向。 看起来就好像我必须为每个子类都有一个单独的EmptyRow?
有没有办法避免这种命运?
答案 0 :(得分:1)
泛型可能有用。您是在创建dRow
的实例还是仅用作基类?如果它只是一个基类(可能有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
函数现在将返回子类类型的单例实例。
您甚至可以添加这样的其他泛型类型约束,以确保子类仅使用dRow
的实例作为其类型。
MustInherit Class dRow(Of T As {dRow(Of T), New})