0

我在一家公司,我们目前正在使用 protobuf3(在我的情况下使用 scalapb)进行很多内部通信。由于 'required is forever' 参数,这个版本的 protobuf 取消了以前版本中的optional和标签。required我可以从协议的角度理解这个论点,但是当所有嵌套消息都包装在Options.

恕我直言,简单而丑陋的解决方案是在myProto.myField.getOrElse {throw Exception("bla"}访问消息字段时只做,但我不希望getOreElse在必须存在该字段时在我的代码库中撒上大量的 s。

我的问题是,是否有:

  1. 一个可以帮助我使用我自己的案例类将 protobuf 消息转换为我的域模型的库?或者
  2. 在没有大量样板的情况下,我自己以一种通用的方式(相对)简单地做到这一点?我自己做了一些反思,但我对 Scala 还很陌生。scalapb.descriptors.FieldDescriptor如何将 a 映射到正确类型的实际值并不明显。

谢谢

4

0 回答 0