Получить имя наследующего класса - PullRequest
1 голос
/ 18 апреля 2009

В приведенном ниже макете, как мне узнать, являюсь ли я экземпляром FooDAL или WeeDAL из метода DoMagix ()?

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

Мои ОО-навыки - отстой, поэтому, если я неправильно понял терминологию, пожалуйста, дайте мне пощечину и поставьте прямо (в таком порядке, плз).

Ответы [ 3 ]

0 голосов
/ 18 апреля 2009

«Путешествие во времени» написал ответ в комментарии:

Я думаю, что Overridable не является необходимым; однако, он должен использовать Me.GetType (), который является полиморфным, и должен получить правильный тип, даже если DoMagix не установлен как Overridable.

0 голосов
/ 29 марта 2015

надеюсь, что смогу "реанимировать" эту тему. Я столкнулся с подобной проблемой, за исключением того, что мне нужно общее свойство для возврата дочернего имени ... Так что конструкция Me ... не будет работать. Я знаю, это считается плохим дизайном, но у меня не было лучшей идеи - кроме множества повторяющихся кодов ... Моя цель очень похожа на цель ОП ... Как получить "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>

Таким образом, возвращаемое значение должно быть ИСТИНА

Xstring защищен, потому что я пытался скрыть / переопределить в дочернем элементе - не повезло, так что на самом деле это не имеет отношения

0 голосов
/ 18 апреля 2009

Сначала DoMagix должен быть переопределен.

И вы можете использовать GetType (Me) внутри DoMagix, чтобы знать, какой это тип во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...