假设我有两个Protobuf消息,A和B,它们的总体结构相似,但不完全相同。因此,我们将共享的内容转移到一个单独的消息中,我们称之为“公共”。这个很好用。
但是,我现在面临以下问题:一个特殊情况存在,我必须处理一个序列化消息,但我不知道它是A类型的消息还是B类型的消息。我在C++中有一个可行的解决方案(如下所示),但是我没有找到在Python中做同样的事情的方法。
示例:
// file: Common.proto
// contains some kind of shared struct that is used by all messages:
message Common {
...
我想将UUID附加到我的protobuf用户消息示例中的一个字段。
message User {
// field containing id as UUID type
required string email;
optional string name;
}
我知道protobuf消息还不支持UUID类型。我已经读过,最好的方法是有一个UUID消息类型。
因此,我猜我的用户消息将导入我的UUID消息proto定义,并将其作为字段类型使用,如下所示:
import "myproject/UUID.proto";
message User {
required
我从SWIG C++ -> Python3.6二进制文件中获得了一个TypeError。它是一个简单的类方法的C包装器,我已经简化以消除所有的表面STL东西。
swig -version
SWIG Version 3.0.12
cmake --version
cmake version 3.15.2
python --version
Python 3.6.9
clang++ --version
clang version 10.0.0 (trunk 375507)
错误是
In [12]: import proto
我绞尽脑汁想如何将"google/protobuf/empty.proto“导入我的proto文件。我目前所做的是:
在我的.csproj文件中,我添加了以下内容:
netcoreapp3.0
在我的项目文件夹中,我有一个名为"Protos“的文件夹,其中有一个test.proto文件,我想在其中使用"empty.proto”,比如:
import "google/protobuf/empty.proto";
但是,我得到了错误File not found in project。我也不喜欢在ItemGroup中指定"3.10.0“
我正在使用.Net Core3.1中的C#。我有一个在现有项目/其他API中使用的类:
/// <summary>Class representing a Result Set (data coming from a result page,
/// plus the total count of the records coming from all the resulting pages) </summary>
/// <typeparam name="T">The class type of the result set</typ
从著名的介绍性示例()派生出一个简单的场景。为了使HelloRequest消息可重用,我在另一个文件--HelloRequest中提取了它。该文件与原始的greet.proto位于同一个文件夹中(见末尾的图片)。
我需要让request.proto) ( greet.proto).中的Greeter服务)知道HelloRequest在greet.proto中导入它的所有尝试都与消息一起失败
...
1>Protos/greet.proto(7,1): error : Import "request.proto" was not found or had errors.
.
嗨,有一个proto文件如下:
enum Type
{
A = 0;
B = 1;
C = 2;
}
message Message
{
User to = 1;
User from = 2;
Type type = 3;
}
我使用protoc编译器将其转换为javascript实用程序类。使用这个生成的javascript文件,我在应用程序中设置了Message对象,如下所示:
const message = new Main.Message()
message.setTo(this.user1) // saved user
message