2012-01-02 10 views
10

में प्रक्रिया के पैरामीटर के रूप में MethodName को कैसे पास करें I प्रक्रिया बनाना चाहते हैं कि इसका पैरामीटर भी एक प्रक्रिया है। क्या यह संभव है?वीबीएनईटी

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

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

इस प्रक्रिया प्रक्रिया से ऊपर बुलाना चाहिए:

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

उपयोग:

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

उत्तर

19

मेरा मानना ​​है कि निम्नलिखित कोड है
मैं कुछ प्रक्रियाओं नीचे पैरामीटर के रूप में इस्तेमाल किया जा करने के लिए बनाया आपको जो चाहिए वह एक उदाहरण है।

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 

पूरे लेख http://dotnetref.blogspot.com/2007/07/passing-function-by-reference-in-vbnet.html

आशा इस मदद करता है में पाया जा सकता।

+0

धन्यवाद! मेरी समस्या अब हल हो गई है। –

+0

+1 क्योंकि यह आम तौर पर ओपी के बजाय वोट डालने के लिए तीसरे पक्षों का कार्य है और मैं एक तृतीय पक्ष हूं। – Lion