任意类型的 Protobuf 消息 (.NET)

时间:2021-06-18 06:28:02

标签: .net protocol-buffers grpc

我想发送/接收任意类型的值。起初,我认为 Any 类型会允许 string int32 等类型,但似乎该类型必须实现 IMessage 来打包或解包。

有没有办法将 string 转换为 Any,反之亦然?

如果没有,是否有其他方法允许消息中的任意类型?

例如

syntax = "proto3";

import "google/protobuf/any.proto";

package Engine;

message SomeMessage {
    string Id = 1;
    google.protobuf.Any AttributeValue = 2;
}

这段代码在 C# 中给出了一个编译错误。

var someMessage = new SomeMessage
{
    Id = "123",
    AttributeValue = Any.Pack("Test")
};
<块引用>

参数 1:无法从“字符串”转换为“Google.Protobuf.IMessage”

1 个答案:

答案 0 :(得分:3)

看起来答案可能是 Value 类型。

syntax = "proto3";

import "google/protobuf/struct.proto";

package Engine;

message SomeMessage {
    string Id = 1;
    google.protobuf.Value AttributeValue = 2;
}