单例对象和子类

莫里·马克维兹(Maury Markowitz)

我有一个名为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?

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

丹尼斯编码器

泛型可能会起作用。您是在创建实例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})

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单例,泛型和继承-让所有子类继承单例功能

来自分类Dev

静态对象与单例类对象在C ++?

来自分类Dev

PHP中的单例对象

来自分类Dev

在数据库更新时使用Spring和Hibernate更新单例对象

来自分类Dev

是否应该通过引用状态和对象来创建许多单例或单例上下文?

来自分类Dev

Javascript文字对象和单例模式

来自分类Dev

密封类和单例

来自分类Dev

单例对象和子类

来自分类Dev

带参数的单例模式对象

来自分类Dev

如何模拟单例工厂的对象创建?

来自分类Dev

单例实例化创建多个对象

来自分类Dev

类对象是单例吗?

来自分类Dev

Autofac解析单例对象中的非单例对象

来自分类Dev

REPL中类型别名和单例对象之间的冲突

来自分类Dev

Android单例类和数据库,访问和更新最常用的对象

来自分类Dev

伴侣对象和Scala中的单例类有什么区别(Guice)

来自分类Dev

用Java创建单例对象

来自分类Dev

在单例对象中扩展类

来自分类Dev

Powershell单例和$ this行为

来自分类Dev

克隆单例对象

来自分类Dev

枚举和单例

来自分类Dev

单例对象的语法

来自分类Dev

PHP中的单例对象

来自分类Dev

为什么单例类不能被子类化?

来自分类Dev

可以使类名和对象名相同的服务单例机制

来自分类Dev

Autofac单例和非单例一起

来自分类Dev

快速访问单例对象

来自分类Dev

Autofac解析单例对象中的非单例对象

来自分类Dev

如何在子类中实现单例模式