Re: Is there a Function and Function Argument generic self-reference?

Tech-Archive recommends: Fix windows errors by optimizing your registry



Tom Shelton wrote:
Maxwell_Smart@xxxxxxxxxxxxxxx wrote:
Is there a way for a function to refer to itself generically? I'd like
to use such a thing (should it exist) for convenience and consistency,
not functionality.


Well, if I understan what you're asking, you could achieve something
like this with inheritance. You would create a base class containing
the common code and then inherit from it. Then, its a matter of
calling your base class implementaion... Something like:

Option Strict On
Option Explicit On

Module Module1

Private Class Common
Public Overridable Function Go() As String
Return "MyBase.Go ()"
End Function

Public Overridable Function [Stop]() As String
Return "MyBase.Stop ()"
End Function
End Class

Private Class MyImplementation
Inherits Common


Public Overrides Function Go() As String
Return "MyImplementation.Go ()" & " - " & MyBase.Go()
End Function

Public Overrides Function [Stop]() As String
Return "MyImplementation.Stop ()" & " - " & MyBase.Stop()
End Function

End Class

Sub Main()
Dim imp As New MyImplementation

Console.WriteLine(imp.Go())
Console.WriteLine(imp.Stop())
End Sub

End Module

--
Tom Shelton [MVP]

Firstly, thanx for responding. I appreciate it.
Secondly, sorry for using "stop" as a function name. Silly me using a
keyword. :)
Thirdly, I have no real working knowledge with inheritance, and do not
understand what the override did exactly.
Finally, why are you returning them in quotes? I chose string as an
object, not because i wanted a string.

Here's what i am trying to do. I have a number of database procedures
(DB2) that will return CURSORs to my DB2Commands for the DataAdaptors
to use. There are quite a few of them, and i need to specify the
parameters for each. But, some code is the same. So, for right now, the
basic is something like:

Sub Stored_Procedure_Common(ByVal Command As DB2Command)
Command.CommandType = CommandType.StoredProcedure
Command.Parameters.Add("OUT_PARM_ERROR_CODE")
End Sub

That would be the common code to be added to all DB2Commands for stored
procedures after the "real" function adds the specific parameters. For
example:

Public Function Get_Data1() As DB2Command
Get_Data1 = DB.CreateCommand
Get_Data1.Parameters.Add(GET_DATA1_SPECIFIC_PARM_1)
Get_Data1.Parameters.Add(GET_DATA1_SPECIFIC_PARM_2)
Get_Data1.Parameters.Add(GET_DATA1_SPECIFIC_PARM_3)
Get_Data1.Parameters.Add(GET_DATA1_SPECIFIC_PARM_4)
Get_Data1.Parameters.Add(GET_DATA1_SPECIFIC_PARM_5)

Stored_Procedure_Common(Get_Data1)
End Function

Public Function Get_Data2() As DB2Command
Get_Data2 = DB.CreateCommand
Get_Data2.Parameters.Add(GET_DATA1_SPECIFIC_PARM_1)
Get_Data2.Parameters.Add(GET_DATA2_SPECIFIC_PARM_2)
Get_Data2.Parameters.Add(GET_DATA2_SPECIFIC_PARM_3)
Stored_Procedure_Common(Get_Data2)
End Function

The first statement is common to all functions, but is only one
statement. The second (and third and forth, for all parameters the
stored PROCEDURE takes) statment is specific to each function. The
final statement call a common function to execute all that is common to
all of them.

I deally, the code would read

Public Function Get_Data2() As DB2Command
Me. = DB.CreateCommand
Me..Parameters.Add(GET_DATA2_SPECIFIC_PARM_1)
Me..Parameters.Add(GET_DATA2_SPECIFIC_PARM_2)
Me..Parameters.Add(GET_DATA2_SPECIFIC_PARM_3)
Stored_Procedure_Common(Me)
End Function

Or, if some form of inheritance could do it.

I am not sure how many we need to do, but it's probably between two and
three hundred, so common code would help inn writing, manintenance, and
understanding.

B.

.



Relevant Pages

  • PRE-PEP: new Path class
    ... Should path be a subclass of str? ... be times a developer wants to use string methods, ... the most common operations should be supported directly. ... to divide (separate) things. ...
    (comp.lang.python)
  • RE: Userform to obtain folder (path) info ?
    ... You can modify the Common dialog control to open up as a browse folder ... ByVal lpBuffer As String) As Long ... Dim lpIDList As Long ...
    (microsoft.public.word.vba.userforms)
  • Re: Common Dialog Box
    ... I can't find the proper way to use a common dialog box on ... Option Compare Database 'Use database order for string ... Global Const gOFN_FILEMUSTEXIST = &H1000 ... Dim mStartingDirectory As String ...
    (comp.databases.ms-access)
  • How display Windows dialog to get a file destination?
    ... documented how to call the Open common Dialog box. ... '* Created by Microsoft ... Public Function GetOpenFile(strInitialDir As String, ... Dim typWinOpen As API_WINOPENFILENAME ...
    (microsoft.public.access.formscoding)
  • Re: accessing unmanaged DLL in C#
    ... >>Public Overridable Function LocGetName(ByVal pLoc As Integer, ... >>pFullName As Boolean, ByRef pName As String, ByVal pMaxSize As ... > That can't be a VB.NET external function declaration. ... created Interop dll. ...
    (microsoft.public.dotnet.languages.csharp)