级联类属性vb.net
此3类结构是我的代码的简化视图: 基类:级联类属性vb.net,vb.net,Vb.net,此3类结构是我的代码的简化视图: 基类: Public Class A Public x As Integer Protected Function G() as Integer Return x End Function Protected Sub S(value as Integer) x = value End Sub Public Function Test() Return x +
Public Class A
Public x As Integer
Protected Function G() as Integer
Return x
End Function
Protected Sub S(value as Integer)
x = value
End Sub
Public Function Test()
Return x + 10
End Function
End Class
子类:
Public Class B
Inherits A
Public Property Prop As Integer
Get
Return G()
End Get
Set(ByVal Value As Integer)
S(Value)
End Set
End Property
End Class
Public Class C
Inherits A
Public InnerB As New B
End Class
目标是能够编写这样的代码:
Dim B1 as New B
Dim C1 as New C
B1.Prop = 10
C1.InnerB.Prop = 20 'the "x" member inherited from A takes the value 20 for the InnerB object but not for the C1 object.
MsgBox(B1.Test()) ' returns 20. Works!
MsgBox(C1.Test()) 'returns 10 instead of 30.
是否可以通过从C的内部类B调用“prop”来填充从C继承的“x”成员?当您设置
C1.InnerB.Prop = 20
确实如此
C1.InnerB.x = 20
当你打电话的时候
C1.Test()
它将访问
C1.x
而不是
C1.InnerB.x
你需要打电话
MsgBox(C1.InnerB.Test())
或重写测试功能
Public Class C
Inherits A
Public InnerB As New B
Public Overrides Function Test()
Return InnerB.Test()
End Function
End Class
但你正在做的是。。。。奇怪的谢谢你的回答,它适用于我的示例,但不适用于我的真实代码:C类实际上包含许多内部类,并且都继承自A类。为了解释我在做什么,它基本上是一个ORM。类A表示数据库连接管理器(包含记录集和movenext/previous方法等…)。每个B类表示一个数据库表,每个属性表示一个字段。C类是一个包含所有数据库表的对象,我使用这个类来管理几个表上的sql“SELECT”请求。就像你说的,也许这很“奇怪”,可能还有另一种逻辑。@kloug如果我不能帮你更多的话,我很抱歉。有点难理解问题是什么。好的,我找到了解决办法。问题实际上是如何从内部类访问外部类成员。这根线帮助了我