如何检查是否在协议缓冲区消息中指定了值(或消息)

本文关键字:消息 协议 何检查 检查 是否 缓冲区 | 更新日期: 2024-09-23 05:44:54

如果IMessage中的某个字段或子消息的IsOptional属性设置为true,如何检查是否指定了它?

pbMsg.DescriptorForType.FindFieldByName("some_field_name").IsOptional == true

原因如果不是,则访问它或它的子字段(或子消息)会导致异常。

如何检查是否在协议缓冲区消息中指定了值(或消息)

使用pbMsg.HasField(...)。以下是来自IMessage.HasField(...)的对象浏览器文档对这种方法的描述:

如果设置了给定字段,则返回true。这完全等同于调用与字段相对应的生成的"Has"属性。

请注意,这是使用protobuf-csharp库。