VB.NET la función que tiene otras funciones como parámetro, y las ejecuta

Hay una manera en vb.net para crear un sub/función que toma como argumento de algún tipo de puntero a otra función, y permitir de esta nueva sub/función para ejecutar la función pasada?

Lo que tengo son de 10-12 xml-rpc funciones a la que estoy llamando en contra de un servidor remoto. Cada una de estas funciones tiene diferentes listas de argumento (uno toma 1 cadena, otro puede tomar de 3 cuerdas y uno de tipo int, etc). Todos ellos devuelven un objeto.

Como estoy llamando a estos, parece que debería ser capaz de tener en cuenta la mejor. Por ejemplo, cada vez que me llame a cualquiera de estas funciones, quiero poner a prueba el valor de retorno de una sesión de la gota, y hacer algo para intentar y volver a conectar con el sistema remoto, etc.

Utilizando .net 3.5

Gracias!

-R

OriginalEl autor rob | 2010-04-29

4 Kommentare

  1. 4
    Public Sub DoSomething(outerFunction as Func(of T))
        ' do something
    
        ' call passed in function
        Dim value = outerFunction
    End Sub

    OriginalEl autor Michael Shimmins

  2. 1

    Después de poco más de investigación, se me ocurrió una solución:

    Utilizando la función CallByName:

    Referencia de MSDN

    Esto me permitió tener una función que realmente se ejecutó el 12 de funciones individuales, y me permitió tener un sistema centralizado de manejo de error de sistema:

       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 

    Tenga en cuenta que usted necesita para tener las Importaciones de Microsoft.VisualBasic.CallType en el módulo/clase que usted está trabajando.

    OriginalEl autor rob

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea