在下面的模型中,如果我是DoMagix()方法中的FooDAL或WeeDAL的实例,我如何找到?
Public MustInherit Class DataAccessClass
Public Sub DoMagix()
'** LOOK AT ME!!! **
'Who am I? Why am I here? Where am I going?
'** /LOOK AT ME!!! **
End Sub
End Class
Public Class FooDAL
Inherits DataAccessClass
End Class
Public Class WeeDAL
Inherits DataAccessClass
End Class
我的OO技能很糟糕,所以如果我的术语出错了,请拍我并给我设置(按顺序plz)。
答案 0 :(得分:0)
首先,DoMagix应该是“Overridable”。
您可以在DoMagix中使用GetType(Me)来了解它在运行时的类型。
答案 1 :(得分:0)
“时空旅行者”在评论中写下了答案:
我认为Overridable不是必需的;但是,它应该使用多态的Me.GetType(),即使DoMagix没有设置为Overridable也应该得到正确的类型。
答案 2 :(得分:0)
希望我能够恢复活力"这个话题。我遇到了类似的问题,除了我需要一个共享属性来返回子名...所以我......构造赢了工作。 我知道,这被认为是糟糕的设计,但我没有更好的主意 - 除了一堆重复的代码...... 我的目标与OP的目标非常相似......如何获得" A"进入基类' XString属性没有instancinatig ......? (xd是XMLDocument ...)
Public MustInherit Class MinMax
Protected Shared Property XString As String = ???
Public Shared Function isValid(value As String) As Boolean
Return min <= value <= max
End Function
Private Shared ReadOnly Property min As Double
Get
Return xd.SelectSingleNode(String.Format("FOEB/Restrictions/{0}", XString)).InnerText.Split("..")(0)
End Get
End Property
Private Shared ReadOnly Property max As Double
Get
Return xd.SelectSingleNode(String.Format("FOEB/Restrictions/{0}", XString)).InnerText.Split("..")(1)
End Get
End Property
End Class
班级用法:
Public Class Restrictions
Public Class A
Inherits MinMax
End Class
Public Class B
Inherits MinMax
End Class
End Class
dim isOk as Boolean= Restrictions.A.isValid("10")
相关的XML
<?xml version="1.0" encoding="utf-8" ?>
<FOEB>
<Restrictions>
<A>1..21</A>
</Restrictions>
</FOEB>
因此返回值应为TRUE
Xstring受到保护,因为我试图在孩子中进行阴影/覆盖 - 没有运气,所以它实际上与此无关