项目中已经使用了案例类。 这些类也用于光滑映射。这些类扩展了一些额外的特性。
我不想从*.proto
说明生成所有这些类。
是否有机会在protobuf
中扩展它们?
或者我应该为他们使用包装。这些包装器将在*.proto
中描述并从中生成。
答案 0 :(得分:1)
用于原型定义
message PBPerson {
int64 id = 1;
string name = 2;
google.protobuf.StringValue phone = 3;
repeated string hobbies = 4;
}
和Scala案例类定义
case class Person(
id: Long,
name: String,
phone: Option[String],
hobbies: Seq[String])
你可以使用because of syntax limitations
import pbconverts.{ Protoable, Scalable }
val convertedPBPerson:PBPerson = Protoable[Person,PBPerson].toProto(person)
val convertedPerson:Person = Scalable[Person,PBPerson].toScala(pbPerson)
此外,此库使用 Scala 宏来确保它是类型安全转换。