public void MapOnce <T1, T2, T3>(IEventDispatcher dispatcher, Event <T1, T2, T3> @event, Action <T1, T2, T3> listener) { var info = AddMapInfo(dispatcher, @event, listener, dispatcher.RemoveListener); dispatcher.AddListenerOnce(@event, listener); dispatcher.AddListenerOnce(@event, (p1, p2, p3) => { RemoveMapInfo(info); }); }
public void MapOnce(IEventDispatcher dispatcher, Event @event, Action listener) { var info = AddMapInfo(dispatcher, @event, listener, dispatcher.RemoveListener); dispatcher.AddListenerOnce(@event, listener); dispatcher.AddListenerOnce(@event, () => { RemoveMapInfo(info); }); }
public void RemoveListenerOnceTest00() { void Listener() => _counter++; _dispatcher.AddListenerOnce(TestEvent.Event00, Listener); _dispatcher.RemoveListener(TestEvent.Event00, Listener); _dispatcher.Dispatch(TestEvent.Event00); Assert.AreEqual(0, _counter); }
public void OnceListenerAddedDuringInvocationTest00() { _dispatcher.AddListenerOnce(TestEvent.Event00, EventListener00_01); _dispatcher.Dispatch(TestEvent.Event00); _dispatcher.Dispatch(TestEvent.Event00); _dispatcher.Dispatch(TestEvent.Event00); Assert.AreEqual(2, _counter); }
public ListenerClass00(IEventDispatcher dispatcher) { dispatcher.AddListenerOnce(TestEvent.Event00, OnOnce); }
public void AddListenerOnce(Event @event, Action listener) { _dispatcher.AddListenerOnce(@event, listener); }