RPGGame.Common.PacketRequest.Dispatch C# (CSharp) Method

Dispatch() public method

public Dispatch ( Object instance, String methodName ) : void
instance Object
methodName String
return void
        public void Dispatch(Object instance, String methodName)
        {
            MethodInfo method = instance.GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
            if (method == null)
                throw new AegisException("No {0} method in {1}.", methodName, instance.GetType().Name);

            method.Invoke(instance, new object[] { this });
        }

Usage Example

示例#1
0
        private void OnReceived(Session session, StreamBuffer buffer)
        {
            PacketRequest packet = new PacketRequest(buffer);
            packet.SkipHeader();

            try
            {
                packet.Dispatch(this, "On" + Protocol.GetName(packet.PacketId));
            }
            catch (AegisException e) when (e.ResultCodeNo == AegisResult.BufferUnderflow)
            {
                Logger.Write(LogType.Err, 2, "Cannot read more data at PacketId(=0x{0:X}).", packet.PacketId);
            }
            catch (Exception e)
            {
                Logger.Write(LogType.Err, 2, e.ToString());
            }
        }