private void Initialize(IActor actor) { // First get all public methods. MethodInfo[] allMethods = actor.GetType().GetMethods(BindingFlags.Public | BindingFlags.NonPublic); foreach (MethodInfo m in allMethods) { // Check if its a method handler. MessageHandlerAttribute messageAttribute = Attribute.GetCustomAttribute(m, typeof(MessageHandlerAttribute)) as MessageHandlerAttribute; if (messageAttribute != null) { string messageName = messageAttribute.Name; if (messageName == string.Empty) { messageName = m.Name; } // Store it. if (!methods.ContainsKey(messageName)) { MessagePrototype newPrototype = MessagePrototype.Create(messageName, m); methods.Add(messageName, m); prototypes.Add(messageName, newPrototype); } } } returnArray = new MessagePrototype[prototypes.Count]; prototypes.Values.CopyTo(returnArray, 0); // Handle the dispatch realCall = new MessageDebugger.DebugMessageDelegate(this.CallMethod); }