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

时间:2012-08-03 21:15:28

标签: c# protocol-buffers

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

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

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

1 个答案:

答案 0 :(得分:1)

使用pbMsg.HasField(...)。以下是IMessage.HasField(...)的对象浏览器文档中有关此方法的内容:

  

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

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