Obecnie rozwijam klasę EventManager, aby upewnić się, że żadne zdarzenia nie zostały podłączone do martwych klientów dupleksu WCF, a także aby zapobiec wielu połączeniom od tego samego klienta do jednego zdarzenia.Przekazywanie delegata jako parametr metody
W gruncie rzeczy utknąłem w tym, że przekazuję delegatowi wydarzenia do funkcji, która będzie kontrolować takie zadanie.
var handler = new SomeEventHandler(MyHandler);
Wire(myObject.SomeEventDelegate, handler);
na to wezwanie:
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)
}
Aktualizacja
Kod dla SomeEventDelegate owijki jest:
public Delegate SomeEventDelegate
{
get { return SomeEvent; }
set { SomeEvent = (SomeEventHandler) value; }
}
event SomeEventHandler SomeEvent;
Oczywiście delegat nie jest zwracane do myObject. SomeEventDelegate I nie mogę zwrócić Delegata z metody, ponieważ potrzebuję też po niej walidacji. Czy masz pojęcie, jak to zrobić?
można połączyć za pomocą delegatów + = – Andrey
C# zdarzenia generują ukryty delegata dla Ciebie. Aby uzyskać dostęp do tego wydarzenia, zobacz: 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 –