Bonjour toutPourquoi une exception Argument est-elle générée lors de la création dynamique du gestionnaire d'événements?
J'ai écrit la méthode suivante:
private void RegisterEvent(object targetObject, string eventName, string methodName)
{
EventInfo eventInfo = targetObject.GetType().GetEvent(eventName);
MethodInfo method = eventInfo.EventHandlerType.GetMethod("Invoke");
IEnumerable<Type> types = method.GetParameters().Select(param => param.ParameterType);
DynamicMethod dynamicMethod = new DynamicMethod(eventInfo.EventHandlerType.Name, typeof (void), types.ToArray(), typeof (QueryWindow));
MethodInfo methodInfo = typeof (QueryWindow).GetMethod(methodName, new[] { typeof (object) });
ILGenerator ilGenerator = dynamicMethod.GetILGenerator(256);
ilGenerator.Emit(OpCodes.Ldarg_1);
ilGenerator.EmitCall(OpCodes.Call, methodInfo, null);
dynamicMethod.DefineParameter(1, ParameterAttributes.In, "sender");
dynamicMethod.DefineParameter(2, ParameterAttributes.In, "e");
// Get an argument exception here
Delegate methodDelegate = dynamicMethod.CreateDelegate(eventInfo.EventHandlerType, this);
eventInfo.AddEventHandler(targetObject, methodDelegate);
}
Je reçois ArgumentException avec le message
Erreur de liaison à la méthode cible.
dans la ligne
Delegate methodDelegate = dynamicMethod.CreateDelegate(eventInfo.EventHandlerType, this);
Quelqu'un pourrait-il indiquer sur mon erreur?
Merci d'avance.
Où obtenez-vous l'exception (à quelle ligne) et quel est le message? –
Merci pour la réponse Je reçois "Erreur de liaison à la méthode cible". dans la ligne Delegate methodDelegate = dynamicMethod.CreateDelegate (eventInfo.EventHandlerType, this); – user306080