Protocol buffers 如何在protobuf中添加if类条件?

Protocol buffers 如何在protobuf中添加if类条件?,protocol-buffers,Protocol Buffers,我有一个protobuf定义,如下所示 message SearchRequest { string my_id = 1; enum MyStrategy { MY_TEST1 = 1; MY_TEST2 = 2; } MyStrategy my_strategy = 2; } 现在我想添加一个选项,比如如果选择了MY_TEST2,则要求客户端从另一组选项中再次选择,如果选择MY_TEST1,则不会提供任何选项。

我有一个protobuf定义,如下所示

message SearchRequest {
    string my_id = 1;

    enum MyStrategy {
            MY_TEST1 = 1;
            MY_TEST2 = 2;
    }
    MyStrategy my_strategy = 2;
}

现在我想添加一个选项,比如如果选择了MY_TEST2,则要求客户端从另一组选项中再次选择,如果选择MY_TEST1,则不会提供任何选项。

提示值的实际行为是一个与protobuf完全无关的UI行为;protobuf只是描述了数据交换,所以我猜(尽管请纠正我),您实际上想说的是:

作为搜索的一部分,用户需要选择“策略”;每个战略都有需要提供的不同领域;如何描述每个策略所需的字段,并对策略的选择进行编码

如果是这样的话,听起来你实际上想要描述的是中的一个,即

syntax=“proto3”;
消息搜索请求{
字符串my_id=1;
策略之一{
搜索选项foo foo=2;
搜索选项栏=3;
}
}
消息搜索选项foo{
//这里的田地。。。
}
消息搜索选项栏{
//这里的田地。。。
}

提示值的实际行为是一种与protobuf完全无关的UI行为;protobuf只是描述了数据交换,所以我猜(尽管请纠正我),您实际上想说的是:

作为搜索的一部分,用户需要选择“策略”;每个战略都有需要提供的不同领域;如何描述每个策略所需的字段,并对策略的选择进行编码

如果是这样的话,听起来你实际上想要描述的是中的一个,即

syntax=“proto3”;
消息搜索请求{
字符串my_id=1;
策略之一{
搜索选项foo foo=2;
搜索选项栏=3;
}
}
消息搜索选项foo{
//这里的田地。。。
}
消息搜索选项栏{
//这里的田地。。。
}

“现在我想添加一个选项,比如如果选择了MY_TEST2,然后再添加一个枚举。”-我真的无法解析这个句子。请您重新措辞,也许可以显示您心目中的有效负载类型(有或没有“多一个枚举”)。这里的DSL仅表示潜在有效负载的形状。它没有这样的逻辑,但如果你重新措辞,我们可能能够提供指导。听起来你可能想要一个可选字段?但由于您似乎在使用proto3,所以所有字段都是可选的……”“现在我想添加一个选项,比如如果选择了MY_TEST2,那么再添加一个枚举。”-我真的无法解析这句话。请您重新措辞,也许可以显示您心目中的有效负载类型(有或没有“多一个枚举”)。这里的DSL仅表示潜在有效负载的形状。它没有这样的逻辑,但如果你重新措辞,我们可能能够提供指导。听起来你可能想要一个可选字段?但由于您似乎正在使用proto3,所以所有字段都是可选的。。。