Ошибка при передаче динамического метода: невозможно использовать группу методов в качестве аргумента - PullRequest
0 голосов
/ 29 марта 2019

Я получаю следующую ошибку: «не могу использовать группу методов в качестве аргумента для динамически отправляемой операции» в:

public static void Convert(dynamic o)
{
clsQRcode.ConvertToQRs(o, SendSignalR); // error is here
}

public static void SendSignalR(dynamic o)
{
.... do stuff ....
}

В clsQRcode.ConvertToQRs:

public static void ConvertToQRs(dynamic o, Action<dynamic> SSR)
{
... do stuff to o
SSR(o);
}

Итак, в чем я не ошибаюсь?

ИЗМЕНЕННЫЙ КОД:

Я удалил все ссылки на динамику и теперь имею следующий код с похожей ошибкой:

public static void ConvertToQRs(string jsonString)
{
clsQRcode.ConvertToQRs(jsonString, SendSignalR); // error still here
}

public static string SendSignalR(string org_int, string person_int, string code, string message, string sCode = "")
{
... do stuff ...
}

Изменен код clsQR:

public static void ConvertToQRs(string jsonString, Func<string, string, string, string, string> SSR)
{
... do the work ...
SSR(org_int, person_int, function, message);
}

Но теперь появляется сообщение об ошибке: «невозможно преобразовать из« группы методов »в« Func »

1 Ответ

1 голос
/ 29 марта 2019

Посмотрите на эту строку в вашем окончательном коде:

public static string SendSignalR(string org_int, string person_int, string code, string message, string sCode = "")

Этот метод принимает 5 string параметров и также возвращает string, поэтому он Func<string, string, string, string, string, string> (первые 5 string - типы входных параметров, последний - тип возвращаемого значения), а здесь

public static void ConvertToQRs(string jsonString, Func<string, string, string, string, string> SSR)

SSR - это Func<string, string, string, string, string> (примечание, только 5 string, а не 6). Замените эту строку на

public static void ConvertToQRs(string jsonString, Func<string, string, string, string, string, string> SSR)

(6 string) и ваш код будет работать.

...