我有一个如下的 protobuf 定义,
message SearchRequest {
string my_id = 1;
enum MyStrategy {
MY_TEST1 = 1;
MY_TEST2 = 2;
}
MyStrategy my_strategy = 2;
}
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个选项,例如如果选择 MY_TEST2,则要求客户端从另一组选项中再次选择,如果选择 MY_TEST1,则不会提供任何选项。
提示输入值的实际行为是 UI 的事情,与 protobuf 完全无关;protobuf 只是描述数据交换,所以我猜测(尽管请纠正我)您实际上想说的是:
作为搜索的一部分,用户需要选择一个“策略”;每个策略都有不同的需要提供的字段;我如何描述每个策略所需的字段,并对策略的选择进行编码?
如果是这样,听起来您实际上想要描述的是 a oneof,即
syntax="proto3";
message SearchRequest {
string my_id = 1;
oneof strategy {
SearchOptionsFoo foo = 2;
SearchOptionsBar bar = 3;
}
}
message SearchOptionsFoo {
// fields here ...
}
message SearchOptionsBar {
// fields here ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1719 次 |
| 最近记录: |