private Dictionary <MessageID, IPackerMessage> GetDictionary() { var assemblyType = typeof(Assembly); var packers = new Dictionary <MessageID, IPackerMessage>(); foreach (var type in assemblyType.Assembly.GetTypes()) { if (!type.IsClass) { continue; } if (type.IsAbstract) { continue; } if (typeof(IPackerMessage).IsAssignableFrom(type)) { IPackerMessage p = Activator.CreateInstance(type) as IPackerMessage; packers.Add(p.Type, p); } } return(packers); }
public void CreatePacket(ref Packet packet, IMessageData message) { packet = null; using (MemoryStream stream = new MemoryStream()) { SizePacket size = 0; using (BinaryWriter writer = new BinaryWriter(stream)) { writer.Write(size); writer.Write(message.Type); IPackerMessage packer = _register.Find(message.Type); if (packer == null) { return; } packer.CreatePacket(writer, message); size = (SizePacket)(stream.Length - sizeof(SizePacket)); stream.Position = 0; writer.Write(size); packet = new Packet(stream.ToArray()); } } }