private void On(PlayerIOMessageEvent e) { Type handler; if (this._messageRegister.TryGetHandler(e.Message.Type, out handler)) { const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance; var instance = (IEvent)Activator.CreateInstance(handler, flags, null, new object[] { this.BotBits, e.Message }, null); var playerEvent = instance as ICancellable; if (playerEvent != null && playerEvent.Cancelled) { new InvalidMessageEvent(this.BotBits, e.Message, new UnknownPlayerException("The player could not be found.")) .RaiseIn(this.BotBits); return; } instance.RaiseIn(this.BotBits); } else { new InvalidMessageEvent(this.BotBits, e.Message, new UnknownMessageTypeException("The received message type is not supported.")) .RaiseIn(this.BotBits); } }
private void OnMessage(PlayerIOMessageEvent e) { Type handler; if (this._messageRegister.TryGetHandler(e.Message.Type, out handler)) { IEvent instance; try { const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance; instance = (IEvent)Activator.CreateInstance(handler, flags, null, new object[] { this.BotBits, e.Message }, null); } catch (Exception ex) { Debug.WriteLine("Error parsing message: {0} \n {1}", e.Message, ex); return; } var playerEvent = instance as ICancellable; if (playerEvent != null && playerEvent.Cancelled) { return; } instance.RaiseIn(this.BotBits); } else { new UnknownMessageEvent(this.BotBits, e.Message) .RaiseIn(this.BotBits); } }