J'ai besoin de générer un gestionnaire d'événements basé sur un objet EventInfo en exécution et d'appeler une méthode dans ce gestionnaire d'événements. Quelque chose comme le suivant:Génération d'événements dynamiques en C# avec DynamicMethod et ILGenerator
public void RegisterAction(ActionData actionData, EventInfo eventInfo,
Control control)
{
MethodInfo methodInfo = eventInfo.EventHandlerType.GetMethod("Invoke");
List<Type> ps = new List<Type>();
foreach (ParameterInfo info in methodInfo.GetParameters())
{
ps.Add(info.ParameterType);
}
DynamicMethod method = new DynamicMethod("Adapter",
typeof (void),
ps.ToArray(),
GetType(),
true);
ILGenerator generator = method.GetILGenerator();
// Here I need to generate a method to do the following:
// ExecuteAction(actionData);
// Then I can use this runtime method as an event handler and
// bind it to the control
Delegate proxy = method.CreateDelegate(eventInfo.EventHandlerType, this);
eventInfo.AddEventHandler(control, proxy);
}
J'ai besoin d'aide pour générer le code IL pour la partie commentée.
Avez-vous une question? – leppie
Oui. La partie indiquée dans les commentaires (comme l'a mentionné Reed Copsey) – Khash