public void SubscribeToBool <C>(string queryName, QueryDelegate <BoolResult, C> answer) { QueryKey key = new QueryKey(queryName, typeof(BoolResult)); if (!boolListeners.ContainsKey(key)) { boolListeners.Add(key, new Dictionary <int, QueryDelegateWrapper>()); } int answerHash = answer.GetHashCode(); if (!boolListeners[key].ContainsKey(answerHash)) { QueryDelegateWrapper wrappedAnswer = (object context) => { return(answer((C)context)); }; boolListeners[key].Add(answerHash, wrappedAnswer); } }
public void SubscribeToSum <T, C>(string queryName, QueryDelegate <T, C> answer) where T : struct { QueryKey key = new QueryKey(queryName, typeof(T)); if (!numberListeners.ContainsKey(key)) { numberListeners.Add(key, new Dictionary <int, QueryDelegateWrapper>()); } int answerHash = answer.GetHashCode(); if (!numberListeners[key].ContainsKey(answerHash)) { QueryDelegateWrapper wrappedAnswer = (object context) => { return(answer((C)context)); }; numberListeners[key].Add(answerHash, wrappedAnswer); } }