array of events in C#?

前端 未结 4 1777
忘掉有多难
忘掉有多难 2020-12-20 18:04

basically:

public delegate void RecvCommandHandler (ChatApplication sender, byte[] content);
event RecvCommandHandler[] commands = new RecvCommandHandler[255         


        
4条回答
  •  独厮守ぢ
    2020-12-20 18:41

    You could create an array of a class with operator overloading to simulate the behavior you are interested in...

    public delegate void EventDelegate(EventData kEvent);
    
    public class EventElement
    {
        protected event EventDelegate eventdelegate;
    
        public void Dispatch(EventData kEvent)
        {
            if (eventdelegate != null)
            {
                eventdelegate(kEvent);
            }
        }
    
        public static EventElement operator +(EventElement kElement, EventDelegate kDelegate)
        {
            kElement.eventdelegate += kDelegate;
            return kElement;
        }
    
        public static EventElement operator -(EventElement kElement, EventDelegate kDelegate)
        {
            kElement.eventdelegate -= kDelegate;
            return kElement;
        }
    }
    
    public EventElement[] commands = new EventElement[255];
    
    commands[100] += OnWhatever;
    commands[100].Dispatch(new EventData());
    commands[100] -= OnWhatever;
    

提交回复
热议问题