• 反馈
  • 9月28日更新后的一个问题

今天更新了 Proto2CS 后,好像反序列化有些问题:客户端发送一个空List, 服务端接收到的是 null。如果客户端发送的 List 里有数据,则服务端接收到的正常。

Proto定义:

message C2R_Test // IRequest
{
	int32 RpcId = 1;
	repeated int32 list = 2;
}

客户端发送消息:
response = (R2C_Test) await session.Call(new C2R_Test() { list = new List<int>()});

服务端代码:

 [MessageHandler(SceneType.Realm)]
    public class C2R_TestHandler: AMRpcHandler<C2R_Test, R2C_Test>
    {
        protected override async ETTask Run(Session session, C2R_Test request, R2C_Test response, Action reply)
        {
            if (request.list == null)
            {
                Log.Info("C2R_TestHandler is null");
            }
            reply();
            await ETTask.CompletedTask;
        }
    }   

服务端接收到的 list 为 null。

  • 这是protobuf反序列化的规则,应该是空的就不创建list了,这样少new一个对象,不是更好吗?

这是protobuf反序列化的规则,应该是空的就不创建list了,这样少new一个对象,不是更好吗?

说点什么吧...