// 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); } }
// 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; } }
// 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); } }
// Constructor. public EventHandlerEntry(Object key, Delegate value, EventHandlerEntry next) { this.key = key; this.value = value; this.next = next; }
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); }
// 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); }
// Constructor. public EventHandlerList() { list = null; }
// 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; } }