Можно ли передать функцию в качестве параметра в С#? Я могу сделать это, используя классы Func или Action, но это заставляет меня сразу объявить всю подпись функции. Когда я пытаюсь использовать Delegate, я получаю ошибку компиляции, говоря, что он не может преобразовать группу методов в делегат.
Я работаю над Axial, и я пытаюсь разрешить пользователям звонить в веб-службы. Для чего я хочу создать прокси-класс Visual Studio, а затем передать сгенерированную функцию. Подпись функции не имеет значения, поскольку сгенерированный код использует только имя функции. Однако я хотел бы передать функцию вместо имени по двум причинам: возможность использования прокси-ресурса Url и ошибка компилятора, если веб-служба не существует или обновлена в Visual Studio.
public void AlertIt(object o) {
Axial.DOM.Window.Alert(o.ToString());
}
public void CallAddService() {
object[] param = new object[] { int.Parse(txtA.Text), int.Parse(txtB.Text) };
Axial.ServerScript.CallWebService(new WSProxy.WS().Add, param, AlertIt, AlertIt);
}
class Axial.ServerScript {
public void CallWebService(Delegate method, object[] param, Action<object> successCallback, Action<object> failureCallback) {
// translate to javascript (already working)
}
}