使用 3.0.0-beta3 版本的 C# 本机包,根据官方文档,默认值是在解析阶段分配的,无法区分是否根本没有传递值,就我而言,这是至关重要的一点,因为我想做一些对解码的原型实体进行验证,所以想知道是否有人对数据的自定义验证或以任何方式覆盖/拦截解析阶段有经验?
一些基本的例子:
- 对于 int32 字段,以防它根本没有通过,所以我想处理这种情况并引发自定义异常,而不是默认 0
- 对于 int32 字段,我想强制执行允许的值范围,如 100-1000 否则抛出解析异常
- 对于字符串字段,我想在解析/解码阶段强制执行最小长度
除了在 protobuf 包/API 之上编写自定义验证层之外,您如何建议这样做?我仍然希望有一个可扩展点但尚未找到