2012-01-02 7 views
10

Chcę utworzyć procedurę, której parametr jest również procedurą. Czy to możliwe?
utworzonego niektóre procedury używane jako parametry poniżej:Jak przekazać nazwę metody jako parametr procedury w 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 

procedura ta powinna wywołać procedurę powyżej:

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

zastosowanie:

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

Odpowiedz

19

wierzę jest następujący kod przykład tego, czego potrzebujesz.

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 

Cały artykuł można znaleźć na http://dotnetref.blogspot.com/2007/07/passing-function-by-reference-in-vbnet.html

nadzieję, że to pomaga.

+0

dziękuję! mój problem został rozwiązany. –

+0

+1, ponieważ na ogół zadaniem osób trzecich jest oddawanie głosów, a nie OP i jestem osobą trzecią. – Lion