Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Detecting method in sub class
Message
De
31/03/2015 09:34:37
 
 
À
31/03/2015 09:26:01
Information générale
Forum:
ASP.NET
Catégorie:
Code, syntaxe and commandes
Versions des environnements
Environment:
VB 9.0
OS:
Windows 8.1
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Divers
Thread ID:
01617154
Message ID:
01617489
Vues:
19
>>You couldn't (without walking the hierarchy). But since the IsMethodExistInSubClass() method is in the base class (so, by definition, you know the base class) I don't see why you need to pass it (or Me) at all. AFAICS your base class just needs to be something like this (check for non-existent method omitted):
Public Class FrameworkBaseClass
>
>	Public Sub New()
>		Dim check = IsMethodExistInSubClass("IniializeWithRow")
>	End Sub
>
>	Public Function IsMethodExistInSubClass(tcMethod As String) As Boolean
>		Dim loType = Me.[GetType]()
>		Dim loMethodInfo = loType.GetMethod(tcMethod, System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.[Public])
>		Return  (loMethodInfo.DeclaringType <> GetType(FrameworkBaseClass))
>	End Function
>
>	Public Overridable Sub IniializeWithRow()
>	End Sub
>End Class
IsMethodExistInSubClass() is not in the class. This is in the Reflection class.

The DataEntry class has a call like this:
        ' If the method exists in the client class
        If loReflection.IsMethodExistInSubClass(Me, "InitializeWithRow", DataEntry) Then
        End If
The Reflection class has a definition like this:
    ' If a method exists in a sub class. This is used when we negotiate with the Overrides method. Thus, the framework
    ' may know if the Overrides method exists in the sub class. This is used in the DataEntry class. So, if the method
    ' does not exist, we do not call it. And, if it exists, it allows us to validate, if necessary, before proceeding.
    ' expO1 Class
    ' expC1 Name of the method
    ' expO2 Base class
    Public Function IsMethodExistInSubClass(ByVal toClass As Object, ByVal tcMethod As String, _
     ByVal toBaseClass As Object) As Boolean
        Dim llExist As Boolean = False
        Dim loType As Type = Nothing
        Dim loMethodInfo As System.Reflection.MethodInfo = Nothing

        ' Get a reference to the class type
        loType = toClass.GetType()

        ' Get a reference to the method
        loMethodInfo = loType.GetMethod(tcMethod, System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.Public)

        ' If the method does not exist
        If loMethodInfo Is Nothing Then
            Return False
        End If

        ' If the method exists in the sub class
        If loMethodInfo.DeclaringType <> toBaseClass.GetType() Then
            llExist = True
        End If

        Return llExist
    End Function
This seems to work.
Michel Fournier
Level Extreme Inc.
Designer, architect, owner of the Level Extreme Platform
Subscribe to the site at https://www.levelextreme.com/Home/DataEntry?Activator=55&NoStore=303
Subscription benefits https://www.levelextreme.com/Home/ViewPage?Activator=7&ID=52
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform