public static void SendPacket <T>(NetPeer peer, T packet) where T : IPacketStruct { Packet packetAttr = (Packet)typeof(T).GetCustomAttribute(typeof(Packet), false); if (packetAttr == null) { Console.WriteLine("Error: No Packet attribute on packet \"" + typeof(T).FullName + "\""); return; } DeliveryMethod deliveryMethod = packetAttr.Reliable ? DeliveryMethod.ReliableOrdered : DeliveryMethod.Unreliable; byte[] data = PacketSerializer.SerializePacket(packet); peer.Send(data, deliveryMethod); }