如何检查是否在协议缓冲区消息中指定了值(或消息)
本文关键字:消息 协议 何检查 检查 是否 缓冲区 | 更新日期: 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库。