public void HandlePacket(EOPacketChannel channel, IPacket packet) { var handler = this.PacketHandlers.Find(p => { var ph = p.GetType().GetCustomAttribute <EOPacketHandler>(); return(packet.GetHeader() == (ph.Family, ph.Action) && channel == ph.Channel); }); Console.WriteLine($"[{channel}] [{packet.Family}:{packet.Action}]"); handler?.Handle(this, packet); }