获取继承类的名称

时间:2009-04-17 22:17:37

标签: vb.net inheritance

在下面的模型中,如果我是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)。

3 个答案:

答案 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受到保护,因为我试图在孩子中进行阴影/覆盖 - 没有运气,所以它实际上与此无关