// Get or set a delegate on this list, by key.
	public Delegate this[Object key]
			{
				get
				{
					EventHandlerEntry entry = list;
					while(entry != null)
					{
						if(entry.key == key)
						{
							return entry.value;
						}
						entry = entry.next;
					}
					return null;
				}
				set
				{
					EventHandlerEntry entry = list;
					while(entry != null)
					{
						if(entry.key == key)
						{
							entry.value = value;
							return;
						}
						entry = entry.next;
					}
					list = new EventHandlerEntry(key, value, list);
				}
			}
示例#2
0
        // Remove a handler from this list.
        public void RemoveHandler(Object key, Delegate value)
        {
            EventHandlerEntry entry = list;
            EventHandlerEntry prev  = null;

            while (entry != null)
            {
                if (entry.key == key)
                {
                    entry.value = Delegate.Remove(entry.value, value);
                    if (entry.value == null)
                    {
                        if (prev != null)
                        {
                            prev.next = entry.next;
                        }
                        else
                        {
                            list = entry.next;
                        }
                    }
                    return;
                }
                prev  = entry;
                entry = entry.next;
            }
        }
示例#3
0
 // Get or set a delegate on this list, by key.
 public Delegate this[Object key]
 {
     get
     {
         EventHandlerEntry entry = list;
         while (entry != null)
         {
             if (entry.key == key)
             {
                 return(entry.value);
             }
             entry = entry.next;
         }
         return(null);
     }
     set
     {
         EventHandlerEntry entry = list;
         while (entry != null)
         {
             if (entry.key == key)
             {
                 entry.value = value;
                 return;
             }
             entry = entry.next;
         }
         list = new EventHandlerEntry(key, value, list);
     }
 }
示例#4
0
 // Constructor.
 public EventHandlerEntry(Object key, Delegate value,
                          EventHandlerEntry next)
 {
     this.key   = key;
     this.value = value;
     this.next  = next;
 }
示例#5
0
        private void registerEventHandler <T>(EventData <T> evt, EventData <T> .OnEvent callback)
        {
            EventHandlerEntry <T> entry = new EventHandlerEntry <T>(evt, callback);

            entry.register();
            eventHandlers.Add(entry);
        }
	// Add a handler to this list.
	public void AddHandler(Object key, Delegate value)
			{
				EventHandlerEntry entry = list;
				while(entry != null)
				{
					if(entry.key == key)
					{
						entry.value = Delegate.Combine(entry.value, value);
						return;
					}
					entry = entry.next;
				}
				list = new EventHandlerEntry(key, value, list);
			}
示例#7
0
        // Add a handler to this list.
        public void AddHandler(Object key, Delegate value)
        {
            EventHandlerEntry entry = list;

            while (entry != null)
            {
                if (entry.key == key)
                {
                    entry.value = Delegate.Combine(entry.value, value);
                    return;
                }
                entry = entry.next;
            }
            list = new EventHandlerEntry(key, value, list);
        }
示例#8
0
 // Constructor.
 public EventHandlerList()
 {
     list = null;
 }
示例#9
0
 // Implement the IDisposable interface.
 public void Dispose()
 {
     list = null;
 }
	// Remove a handler from this list.
	public void RemoveHandler(Object key, Delegate value)
			{
				EventHandlerEntry entry = list;
				EventHandlerEntry prev = null;
				while(entry != null)
				{
					if(entry.key == key)
					{
						entry.value = Delegate.Remove(entry.value, value);
						if(entry.value == null)
						{
							if(prev != null)
							{
								prev.next = entry.next;
							}
							else
							{
								list = entry.next;
							}
						}
						return;
					}
					prev = entry;
					entry = entry.next;
				}
			}
	// Constructor.
	public EventHandlerList()
			{
				list = null;
			}
		// Constructor.
		public EventHandlerEntry(Object key, Delegate value,
								 EventHandlerEntry next)
				{
					this.key = key;
					this.value = value;
					this.next = next;
				}
	// Implement the IDisposable interface.
	public void Dispose()
			{
				list = null;
			}