[英]Can protobuf-net output .proto files that will be used for code generation in C++?
我试图弄清楚protobuf-net
是否能够生成.proto
文件,然后可以将这些文件与常规 Protobuf 编译器一起使用来编译 C++ 类。
我看了那些问题
但他们真的很老,谈论 V2 Protobuff 语法。
我的目标是在 C# 中编写类层次结构,然后使用protobuf-net
为所述层次结构生成.proto
文件。 然后我想使用官方的 Google Complier 来生成基于该层次结构的 C++ 代码。
最终结果应该在 C# 和 C++ 之间具有字段和数据奇偶校验,以便可以交换消息。
这可能吗?
我将尝试提供一个示例。
假设我在 C# 中有以下代码:(可能有一些语法错误,因为我在记事本中快速输入了它)
public class Point{
public double x;
public double y;
}
public abstract class Polygon{
public List<Point> Vertices;
public Polygon(){
Vertecies = new();
}
public override ToString(){
string ans = "";
foreach(var point in Vertecies){
ans += $"({point.x},{point.y})"
}
return ans;
}
}
public class Square: Polygon{
public Sqare(Point a, Point b, Point c Point d){
this.Vertices.Add(a);
this.Vertices.Add(b);
this.Vertices.Add(c);
this.Vertices.Add(d);
}
}
public class Triangle: Polygon{
public Triangle(Point a, Point b, Point c){
this.Vertices.Add(a);
this.Vertices.Add(b);
this.Vertices.Add(c);
}
}
我想使用protobuf-net
生成一个.proto
文件以在 C++ 中生成相同的层次结构。
我的问题是: protobuf-net
是否可行? 如果您认为缺少更多信息,请告诉我缺少什么,我会提供。
是和不是。 Protobuf-net 同时支持 proto2 和 proto3,所以:这很好 - 它通常在 GetSchema/GetProto 中做得很好,可以正常工作。 但是,我看到您的特定模型的问题是:继承。 Protobuf 并没有真正做继承。 Protobuf-net 可以以与oneof
in.proto 条款兼容的方式伪造它,但是:它并不理想。 如果您想要一个能够很好地映射到跨平台使用的模型,您主要需要从 .proto 支持的简单模型开始,其中不包括它。
但是:注释模型并试一试!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.