internal bool TryGetUserArgs <TEventType, TCallbackArgs>(EventCallback <TEventType, TCallbackArgs> callback, TrickleDown useTrickleDown, out TCallbackArgs userArgs) where TEventType : EventBase <TEventType>, new() { userArgs = default(TCallbackArgs); bool flag = callback == null; bool result; if (flag) { result = false; } else { EventCallbackList callbackListForReading = this.GetCallbackListForReading(); long eventTypeId = EventBase <TEventType> .TypeId(); CallbackPhase phase = (useTrickleDown == TrickleDown.TrickleDown) ? CallbackPhase.TrickleDownAndTarget : CallbackPhase.TargetAndBubbleUp; EventCallbackFunctor <TEventType, TCallbackArgs> eventCallbackFunctor = callbackListForReading.Find(eventTypeId, callback, phase) as EventCallbackFunctor <TEventType, TCallbackArgs>; bool flag2 = eventCallbackFunctor == null; if (flag2) { result = false; } else { userArgs = eventCallbackFunctor.userArgs; result = true; } } return(result); }
public void RegisterCallback <TEventType, TCallbackArgs>(EventCallback <TEventType, TCallbackArgs> callback, TCallbackArgs userArgs, TrickleDown useTrickleDown = TrickleDown.NoTrickleDown) where TEventType : EventBase <TEventType>, new() { bool flag = callback == null; if (flag) { throw new ArgumentException("callback parameter is null"); } long eventTypeId = EventBase <TEventType> .TypeId(); CallbackPhase phase = (useTrickleDown == TrickleDown.TrickleDown) ? CallbackPhase.TrickleDownAndTarget : CallbackPhase.TargetAndBubbleUp; EventCallbackList eventCallbackList = this.GetCallbackListForReading(); bool flag2 = eventCallbackList != null; if (flag2) { EventCallbackFunctor <TEventType, TCallbackArgs> eventCallbackFunctor = eventCallbackList.Find(eventTypeId, callback, phase) as EventCallbackFunctor <TEventType, TCallbackArgs>; bool flag3 = eventCallbackFunctor != null; if (flag3) { eventCallbackFunctor.userArgs = userArgs; return; } } eventCallbackList = this.GetCallbackListForWriting(); eventCallbackList.Add(new EventCallbackFunctor <TEventType, TCallbackArgs>(callback, userArgs, phase)); }