【问题标题】:Protobuf Message With Arbitrary Type (.NET)具有任意类型的 Protobuf 消息 (.NET)
【发布时间】:2021-06-18 06:28:02
【问题描述】:

我想发送/接收任意类型的值。起初,我以为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”

【问题讨论】:

    标签: .net protocol-buffers grpc


    【解决方案1】:

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

    syntax = "proto3";
    
    import "google/protobuf/struct.proto";
    
    package Engine;
    
    message SomeMessage {
        string Id = 1;
        google.protobuf.Value AttributeValue = 2;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多