Функция VB.NET, которая берет другие функции в качестве параметра и выполняет их

Существует ли путь в vb.net для создания sub/function, который возьмет в качестве аргумента некоторый указатель на другую функцию и позволит этому новому sub/function выполнять переданную функцию?

Что я имею, 10-12 функций xml-rpc, которые я вызываю против удаленного сервера. Каждая из этих функций имеет различные списки аргументов (каждый берет 1 строку, другой мог бы взять 3 строки и один интервал, и т.д.). Все они возвращают объект.

Как я называю их, кажется, что это должно смочь быть учтенным лучше. Например, каждый раз я вызываю любую из этих функций, я хочу протестировать возвращаемое значение на отбрасывание сессии и сделать что-то, чтобы попытаться снова соединиться с удаленной системой, и т.д.

Используя .net 3.5

Спасибо!

- R

5
задан Michael Shimmins 29 April 2010 в 01:18
поделиться

4 ответа

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

    ' call passed in function
    Dim value = outerFunction
End Sub
4
ответ дан 18 December 2019 в 06:34
поделиться

Вас нужно отвезти ... в Func город

16
ответ дан 18 December 2019 в 06:34
поделиться

Используйте Func

3
ответ дан 18 December 2019 в 06:34
поделиться

После некоторых дополнительных исследований я нашел решение:

Использование функции CallByName:

Ссылка MSDN

Это позволило мне есть одна функция, которая фактически запускает 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 

Обратите внимание, что вам необходимо иметь Imports Microsoft.VisualBasic.CallType в модуле / классе, над которым вы работаете.

1
ответ дан 18 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: