VB.NET函数,将其他函数作为参数,并执行它们

时间:2010-04-29 01:09:13

标签: .net vb.net xml-rpc

在vb.net中是否有办法创建一个子/函数,它将某个指向另一个函数的指针作为参数,并允许这个新的子/函数执行传递的函数?

我所拥有的是10-12个xml-rpc函数,我正在对远程服务器进行调用。这些函数中的每一个都有不同的参数列表(一个需要1个字符串,另一个可能需要3个字符串和一个int等)。他们都返回一个对象。

正如我所说的那样,它似乎应该能够被更好地考虑。例如,每当我调用这些函数时,我都想测试会话丢弃的返回值,并尝试重新连接到远程系统等。

使用.net 3.5

谢谢!

-R

4 个答案:

答案 0 :(得分:16)

你需要被带到Func'y town

答案 1 :(得分:4)

Public Sub DoSomething(outerFunction as Func(of T))
    ' do something

    ' call passed in function
    Dim value = outerFunction
End Sub

答案 2 :(得分:3)

答案 3 :(得分:1)

经过一些研究后,我想出了一个解决方案:

使用CallByName函数:

MSDN reference

这使我有一个实际运行12个独立功能的功能,并使我有一个集中的错误处理系统:

   Private Function RunRemoteRequest(ByVal functionName As String, ByVal service_url As String, ByVal args() As Object) As Object
    Dim retnVal As Object

    Dim success As Boolean = False
    While success = False And Me._connAttemptCount < MAX_ATTEMPTS
        Try
            retnVal = CallByName(remProxy, functionName, Method, args)
            success = True
            Me._connAttemptCount = 0
        Catch ex As Exception
            Me._connAttemptCount += 1
            If ex.Message = "Error I am looking for" Then
                Me.Login()
            Else
                log.Error("Error in RunRemoteRequest(" & functionName & ").", ex)
            End If
        End Try
    End While

    RunRemoteRequest = retnVal

End Function 

请注意,您需要在正在使用的模块/类中导入Microsoft.VisualBasic.CallType。