private static INetworkPacketController RegisterPacketHandlers(INetworkPacketController controller) { var packetHandlers = Assembly.GetExecutingAssembly() .GetTypes() .Where(x => !x.IsAbstract && typeof(INetworkPacketHandler).IsAssignableFrom(x)); foreach (var handler in packetHandlers) { var packetType = handler.BaseType.GetGenericArguments().FirstOrDefault(); var packetId = (short)packetType.GetField("OpCode").GetValue(null); controller.Register(packetType, handler, packetId); } return(controller); }
private static INetworkPacketController RegisterPacketHandlers(INetworkPacketController controller) { var packetHandlers = AppDomain.CurrentDomain .GetAssemblies() .SelectMany(x => x.GetTypes()) .Where(x => !x.IsAbstract && typeof(INetworkPacketHandler).IsAssignableFrom(x)) .ToArray(); foreach (var handler in packetHandlers) { var declaringType = handler.GetInterfaces().OrderByDescending(x => x.FullName).FirstOrDefault(); var packetType = declaringType.GetGenericArguments().FirstOrDefault(); var packetId = (short)packetType.GetField("OpCode").GetValue(null); controller.Register(packetType, handler, packetId); } return(controller); }