Java Protobuf中的接口建模

Java Protobuf中的接口建模,java,c#,protocol-buffers,proto,Java,C#,Protocol Buffers,Proto,我是Protobuf的新手,了解到在Protobuf中没有一种建模接口实现的方法。我们有一组现有的域对象,它们在C#中实现了一个通用的“IBase”接口 一个选项是仅将protobuf生成的类用作DTO,并在反序列化后将其转换为域类,但这意味着我需要创建一个单独的DTO类,我在.proto中使用该类,并在反序列化后将其转换为域类 我想在proto中对派生产品类进行建模,并分别在C#和Java中生成客户机和服务器类。请就如下对现有接口实现建模的最佳实践提出建议。我在下面提供了一个简单的表示 接口I

我是Protobuf的新手,了解到在Protobuf中没有一种建模接口实现的方法。我们有一组现有的域对象,它们在C#中实现了一个通用的“IBase”接口

一个选项是仅将protobuf生成的类用作DTO,并在反序列化后将其转换为域类,但这意味着我需要创建一个单独的DTO类,我在.proto中使用该类,并在反序列化后将其转换为域类

我想在proto中对派生产品类进行建模,并分别在C#Java中生成客户机和服务器类。请就如下对现有接口实现建模的最佳实践提出建议。我在下面提供了一个简单的表示

接口IBase
{  
字符串ProductName{get;set;}
void Add(字符串baseProduct);
}
接口驱动:IBase
{                                 
双生产率{get;set;}
}
类别衍生产品:IDerived
{
字符串ProductName{get;set;}
void Add(字符串baseProduct){}
双生产率{get;set;}
}

我不知道Java的情况,但在C中,protoc插件生成的类是部分类。因此,您可以将您的原型建模为:

消息衍生产品{
字符串product_name=1;
双产品率=2;
}
运行protoc生成代码,然后手动添加另一个分部类:

公共部分类派生产品:IDerived
{
//protoc已在另一个文件中生成属性
公共void添加(字符串baseProduct)
{
//在这里实现
}
}

我不知道Java的情况,但在C中,protoc插件生成的类是部分类。因此,您可以将您的原型建模为:

消息衍生产品{
字符串product_name=1;
双产品率=2;
}
运行protoc生成代码,然后手动添加另一个分部类:

公共部分类派生产品:IDerived
{
//protoc已在另一个文件中生成属性
公共void添加(字符串baseProduct)
{
//在这里实现
}
}

有关如何包含代码块的示例,请阅读。我现在已经解决了这个问题,但它将帮助您解决未来的问题。请注意,C#和Java的答案可能会有所不同。有关如何包含代码块的示例,请阅读。我现在已经解决了这个问题,但它将帮助您解决未来的问题。请注意,C#和Java的答案可能会有所不同。谢谢Jon的回答!我会记下接下来的代码格式。谢谢Jon的回复!我会记下接下来的代码格式。