2012-01-02 17 views
10

Quiero crear un procedimiento que su parámetro sea también un procedimiento. ¿Es posible?
creé algunos procedimientos que se utilizarán como parámetros siguientes:Cómo pasar MethodName como parámetro de un procedimiento en VBNET

Private Sub Jump(xStr as string) 
    Msgbox xStr & " is jumping." 
End Sub 

Private Sub Run(xStr as string) 
    Msgbox xStr & " is jumping." 
End Sub 

este procedimiento debe llamar al procedimiento anterior:

Private Sub ExecuteProcedure(?, StringParameter) '- i do not know what to put in there 
    ? ' - name of the procedure with parameter 
End Sub 

uso:

ExecuteProcedure(Jump, "StringName") 
ExecuteProcedure(Run, "StringName") 

Respuesta

19

Creo que el siguiente código es un ejemplo de lo que necesitas.

Public Delegate Sub TestDelegate(ByVal result As TestResult) 

Private Sub RunTest(ByVal testFunction As TestDelegate) 

    Dim result As New TestResult 
    result.startTime = DateTime.Now 
    testFunction(result) 
    result.endTime = DateTime.Now 

End Sub 

Private Sub MenuItemStartTests_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemStartTests.Click 

    Debug.WriteLine("Starting Tests...") 
    Debug.WriteLine("") 
    '================================== 
    ' Add Calls to Test Modules Here 

    RunTest(AddressOf Test1) 
    RunTest(AddressOf Test2) 

    '================================== 

    Debug.WriteLine("") 
    Debug.WriteLine("Tests Completed") 

End Sub 

el artículo completo se puede encontrar en http://dotnetref.blogspot.com/2007/07/passing-function-by-reference-in-vbnet.html

Espero que esto ayude.

+0

gracias! mi problema ahora está resuelto –

+0

+1 porque generalmente es tarea de terceros emitir votos en lugar de OP y soy un tercero. – Lion

Cuestiones relacionadas