using System; using System.Collections.Generic; using System.Linq; namespace Encompass { internal class MessageManager { private Dictionary> messageTypeToMessages = new Dictionary>(); internal void AddMessage(TMessage message) where TMessage : struct, IMessage { if (!messageTypeToMessages.ContainsKey(typeof(TMessage))) { messageTypeToMessages.Add(typeof(TMessage), new List()); } messageTypeToMessages[typeof(TMessage)].Add(message); } internal void ClearMessages() { foreach (var entry in messageTypeToMessages) { entry.Value.Clear(); } } internal IEnumerable GetMessagesByType() where TMessage : struct, IMessage { return messageTypeToMessages[typeof(TMessage)].Cast(); } } }