科技颠覆者 发表于 2023-2-18 20:42:19

Protobuf Options 自定义插件使用

ProtoOptions

简介

使用protobuf的options,我们可以添加我们自己的option,然后根据option生成代码添对proto中的参数进行处理,例如添加message的校验。
extension

能够对已经存在的消息进行扩展,这种扩展只是动态增加字段,而没有增加接口。
例子:扩展protobuf的FieldOptions
message MyFileOptions {
optional bool ok = 1;
}

// 扩展protobuf的MessageOptions
extend google.protobuf.FileOptions {
optional MyFileOptions my_file_option = 51234; // 取一个自定义不重复值
}protobuf options


[*]google.protobuf.FileOptions
[*]google.protobuf.ServiceOptions
[*]google.protobuf.MethodOptions
[*]google.protobuf.MessageOptions
[*]google.protobuf.FieldOptions
[*]google.protobuf.EnumOptions
[*]google.protobuf.EnumValueOptions
[*]google.protobuf.OneofOptions
[*]google.protobuf.ExtensionRangeOptions
实现自定义option

扩展实现

mkdir protoc-gen-my-option
cd protoc-gen-my-option实现一个FileOptions
mkdir proto# 在proto中实现自己的option,可以将EOF的内容拷贝到proto/my_option.proto中echo > proto/my_option.proto
页: [1]
查看完整版本: Protobuf Options 自定义插件使用