如果IMessage中的某个字段或子消息将IsOptional属性设置为true,那么如何检查它是否已指定?
pbMsg.DescriptorForType.FindFieldByName("some_field_name").IsOptional == true
如果不是,则访问它或其子字段(或子消息)会导致异常。
答案 0 :(得分:1)
使用pbMsg.HasField(...)
。以下是IMessage.HasField(...)
的对象浏览器文档中有关此方法的内容:
如果设置了给定字段,则返回true。这完全等同于调用与该字段对应的生成的“Has”属性。
请注意,这是使用protobuf-csharp库。