Beispiel #1
0
        internal void RemoveEventHandler(string name, ScriptObject handler)
        {
            if (event_handlers == null)
            {
                return;
            }

            List <ScriptObjectEventInfo> list;

            if (!event_handlers.TryGetValue(name, out list))
            {
                return;
            }

            for (int i = list.Count - 1; i >= 0; i--)
            {
                if (handler == null || list [i].Callback.Handle == handler.Handle)
                {
                    ScriptObjectEventInfo ei = list [i];
                    ei.EventInfo.RemoveEventHandler(ManagedObject, ei.GetDelegate());
                    list.RemoveAt(i);
                    if (handler != null)
                    {
                        return;
                    }
                }
            }
        }
Beispiel #2
0
        internal void AddEventHandler(string name, ScriptObject handler, EventInfo e)
        {
            List <ScriptObjectEventInfo> list;

            if (event_handlers == null)
            {
                event_handlers = new Dictionary <string, List <ScriptObjectEventInfo> >();
            }
            if (!event_handlers.TryGetValue(name, out list))
            {
                list = new List <ScriptObjectEventInfo> ();
                event_handlers.Add(name, list);
            }

            ScriptObjectEventInfo ei = new ScriptObjectEventInfo(name, handler, e);

            list.Add(ei);
            ei.EventInfo.AddEventHandler(ManagedObject, ei.GetDelegate());
        }