1

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

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

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

4

1 回答 1

1

使用pbMsg.HasField(...). 以下是对象浏览器文档中IMessage.HasField(...)关于此方法的说明:

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

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

于 2012-08-07T00:39:34.130 回答