public FluentElement <T> Register <TEvent>(Call <TEvent> c, TrickleDown trickleDown = TrickleDown.NoTrickleDown) where TEvent : EventBase <TEvent>, new() { var handler = new CallHandle { x = x, eventTypeId = EventBase <TEvent> .TypeId() }; var callback = (EventCallback <TEvent>)(evt => { handler.evt = evt; handler.totalCalls++; handler.trickle = trickleDown; c.Invoke(evt, handler); }); handler.callback = callback; x.RegisterCallback(callback, trickleDown); if (EventStorage <TEvent> .Handlers.ContainsKey(c)) { EventStorage <TEvent> .Handlers[c] = handler; } else { EventStorage <TEvent> .Handlers.Add(c, handler); } return(x); }
public FluentElement <T> Unregister(CallHandle handle) { FluentUITK.UnregisterCallback(x, handle.eventTypeId, handle.callback, handle.trickle); return(x); }