Est-il possible de passer une fonction comme paramètre en C# ? Je peux le faire en utilisant les classes Func ou Action, mais cela m'oblige à déclarer toute la signature de la fonction en une seule fois. Lorsque j'essaie d'utiliser Delegate, j'obtiens une erreur de compilation indiquant qu'il est impossible de convertir un groupe de méthodes en Delegate.
Je travaille sur Axial et j'essaie de permettre aux utilisateurs d'appeler des services web. Ce que je recherche, c'est la possibilité de créer la classe proxy de Visual Studio, puis de passer la fonction générée. La signature de la fonction n'a pas d'importance car le code généré utilise uniquement le nom de la fonction. Cependant, j'aimerais transmettre la fonction au lieu du nom pour deux raisons : la possibilité d'utiliser la propriété Url du proxy et une erreur de compilation si le service web n'existe pas ou est mis à jour dans 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)
}
}