Est-il possible d'utiliser Reflection is C# pour déclencher un événement? Dire que j'ai une situation comme celle-ci:C# Créer un délégué qui déclenche un événement?
public delegate void SomeEventHandler(object sender, BenArgs e);
class EventHub
{
public event SomeEventHandler SOME_EVENT;
public void fireEvent(String eventName)
{
SomeEventHandler evt = (SomeEventHandler) Delegate.CreateDelegate(typeof(SomeEventHandler), this, eventName);
evt.Invoke(null, null);
}
}
Signification si je l'appelle
EventHub.fireEvent("SOME_EVENT")
alors il est la plaque tournante événement SOME_EVENT d'incendie? J'ai essayé ceci et je reçois juste des exceptions.
C'est surtout une curiosité de ma part, je sais que dans ce cas je pourrais tout aussi bien tirer l'événement sans réfléchir.
Ha! Ça marche! Merci beaucoup. Est-ce que je voudrais utiliser l'invocation dynamique plutôt que Invoke? – Ben
@Ben: À la vôtre. 'System.Delegate' ne déclare pas une méthode' Invoke'. – Ani
Incroyable! Tout à l'heure j'ai essayé avec 'BindingFlags.Instance' seulement parce que je pense que l'événement est' public'. Mais j'obtiens 'FieldInfo [0]'. Pourquoi? –