Je suis en train de développer une classe EventManager pour m'assurer qu'aucun événement n'est laissé filaire aux clients duplex WCF morts, et aussi pour empêcher le câblage multiple d'un même client vers un événement.Passage de délégué comme paramètre de méthode
Maintenant, fondamentalement, je suis ce qui est bloqué avec essaie de passer le délégué de l'événement à une fonction qui contrôlera l'affectation comme ceci.
var handler = new SomeEventHandler(MyHandler);
Wire(myObject.SomeEventDelegate, handler);
Pour appeler ceci:
private void Wire(Delegate eventDelegate, Delegate handler)
{
// Pre validate the subscription.
eventDelegate = Delegate.Combine(eventDelegate, handler);
// Post actions (storing subscribed event delegates in a list)
}
Mise à jour
Le code wrapper SomeEventDelegate est:
public Delegate SomeEventDelegate
{
get { return SomeEvent; }
set { SomeEvent = (SomeEventHandler) value; }
}
event SomeEventHandler SomeEvent;
Il est évident que le délégué n'est pas retourné au myObject. SomeEventDelegate Et je ne peux pas retourner le délégué de la méthode parce que j'ai besoin d'une validation après aussi. Avez-vous une idée sur la façon de faire cela?
vous pouvez combiner les délégués à l'aide + = – Andrey
événements C# génèrent un délégué caché pour vous. Pour accéder à cet événement, référez-vous à: http://stackoverflow.com/questions/1129517/c-how-to-find-if-an-event-is-hooked-up/1129530#1129530. –
http://izlooite.blogspot.com/2011/02/delegates-vs-methods.html –