public void RegisterCallback <TEventType, TCallbackArgs>(EventCallback <TEventType, TCallbackArgs> callback, TCallbackArgs userArgs, TrickleDown useTrickleDown = TrickleDown.NoTrickleDown, InvokePolicy invokePolicy = default) where TEventType : EventBase <TEventType>, new() { if (callback == null) { throw new ArgumentException("callback parameter is null"); } long eventTypeId = EventBase <TEventType> .TypeId(); var callbackPhase = useTrickleDown == TrickleDown.TrickleDown ? CallbackPhase.TrickleDownAndTarget : CallbackPhase.TargetAndBubbleUp; EventCallbackList callbackList = GetCallbackListForReading(); if (callbackList != null) { var functor = callbackList.Find(eventTypeId, callback, callbackPhase) as EventCallbackFunctor <TEventType, TCallbackArgs>; if (functor != null) { functor.userArgs = userArgs; return; } } callbackList = GetCallbackListForWriting(); callbackList.Add(new EventCallbackFunctor <TEventType, TCallbackArgs>(callback, userArgs, callbackPhase, invokePolicy)); }
public void RegisterCallback <TEventType>(EventCallback <TEventType> callback, TrickleDown useTrickleDown = TrickleDown.NoTrickleDown, InvokePolicy invokePolicy = default) where TEventType : EventBase <TEventType>, new() { if (callback == null) { throw new ArgumentException("callback parameter is null"); } long eventTypeId = EventBase <TEventType> .TypeId(); var callbackPhase = useTrickleDown == TrickleDown.TrickleDown ? CallbackPhase.TrickleDownAndTarget : CallbackPhase.TargetAndBubbleUp; EventCallbackList callbackList = GetCallbackListForReading(); if (callbackList == null || callbackList.Contains(eventTypeId, callback, callbackPhase) == false) { callbackList = GetCallbackListForWriting(); callbackList.Add(new EventCallbackFunctor <TEventType>(callback, callbackPhase, invokePolicy)); } }
public EventCallbackFunctor(EventCallback <TEventType> callback, CallbackPhase phase, InvokePolicy invokePolicy = default) : base(phase, invokePolicy) { m_Callback = callback; m_EventTypeId = EventBase <TEventType> .TypeId(); }
protected EventCallbackFunctorBase(CallbackPhase phase, InvokePolicy invokePolicy) { this.phase = phase; this.invokePolicy = invokePolicy; }
internal void RegisterCallback <TEventType>(EventCallback <TEventType> callback, InvokePolicy invokePolicy, TrickleDown useTrickleDown = TrickleDown.NoTrickleDown) where TEventType : EventBase <TEventType>, new() { if (m_CallbackRegistry == null) { m_CallbackRegistry = new EventCallbackRegistry(); } m_CallbackRegistry.RegisterCallback(callback, useTrickleDown, invokePolicy); GlobalCallbackRegistry.RegisterListeners <TEventType>(this, callback, useTrickleDown); AddEventCategories <TEventType>(); }
public NotifyChoice(IModelItemOwner owner, InvokePolicy invokePolicy) : base(owner) => this._invokePolicy = invokePolicy;