J'ai un System.Reflection.MethodInfo et j'aimerais avoir une méthode qui crée un délégué (de préférence un Func < ...> ou une Action < ...>) qui représente cette méthode , donné une instance pour l'invoquer.Créer un délégué avec des paramètres arbitraires
Donc, idéalement, je voudrais quelque chose comme le psuedo-code suivant:
public TDelegate GetMethod<TDelegate>(MethodInfo methodToRepresent, object instanceToInvokeOn)
{
return (TDelegate)((parameters....) => methodToRepresent.Invoke(instanceToInvokeOn, all parameters in an object[]));
}
où TDelegate représente la signature de la méthode représentée. Si les signatures ne correspondent pas, une exception doit être levée.
Je me rends compte que je ne peux probablement pas réaliser cela avec une expression lambda simple, puisque ses parametertypes doivent être connus à la compilation. Peut-être que j'ai besoin de construire un délégué à partir de zéro? Est-il possible de créer un délégué en spécifiant son corps et ses paramètres séparément?
Merci
Merci, je n'étais pas au courant des méthodes Delegate.CreateDelegate. – JBSnorro