使用3.0.0-beta3版本的C#本机包,根据official documentation默认值在解析阶段分配,并且无法区分是否根本没有传递值,为此我认为这是至关重要的因为我想对已解码的proto实体进行某种验证,所以想知道是否有人有过自定义数据验证或以任何方式覆盖/拦截解析阶段的经验?
一些基本的例子:
除了在protobuf包/ API之上编写自定义验证层之外,您会建议如何做到这一点?我仍然希望有一个可扩展性点但尚未找到
答案 0 :(得分:1)
验证需要在解析后的应用程序代码中完成。在解析器本身中没有钩子可以做到这一点。
Proto3不区分默认值字段和未发送字段。实际上,在发送端,如果字段已明确设置为其默认值,则不会对其进行编码。所以,没有办法在proto3中实现你的第一条规则。