如何在 proto3 中定义返回 C# dynamic 类型
在 proto3 中,可以使用以下语法定义返回 C# dynamic 类型的字段:
import "google/protobuf/descriptor.proto";
message MyMessage {
// 使用 Any 类型作为 dynamic 类型的容器
google.protobuf.Any my_field = 1;
}
在上面的示例中,我们使用 Google Protocol Buffers 中的 Any 类型作为 dynamic 类型的容器。这样,我们就可以将任何类型的数据存储在这个字段中,并且在 C# 中可以轻松地使用 dynamic 类型来访问该字段的值。
在 C# 中,我们可以使用以下代码来访问 dynamic 类型的字段:
MyMessage message = new MyMessage();
message.my_field = new MyOtherMessage();
dynamic value = message.my_field.Unpack<MyOtherMessage>();
在上面的代码中,我们首先创建了一个 MyMessage 对象,并将其中的 my_field 字段设置为一个 MyOtherMessage 对象。然后,我们使用 Unpack() 方法将该字段的值转换为 MyOtherMessage 对象,并将其存储在一个 dynamic 类型的变量中。
通过这种方式,我们可以在 C# 中方便地使用 dynamic 类型来访问 proto3 中的任何字段。
原文地址: https://www.cveoy.top/t/topic/nwoz 著作权归作者所有。请勿转载和采集!