Example #1
0
        public void RegisterReactor <T>(IReactor <T> reactor) where T : IEvent
        {
            Type eventType = typeof(T);

            if (!reactorCallbacks.ContainsKey(eventType))
            {
                reactorCallbacks.Add(eventType, new List <Func <IEvent, Task> >());
            }
            Func <IEvent, Task> delegateFunction = async(IEvent evt) => await reactor.OnAsync((T)evt);

            reactorCallbacks[eventType].Add(delegateFunction);
        }