私は多くの異なるスキーマを持っていますが、すべてのスキーマに含まれるフィールドのセットがあります。別のスキーマで親スキーマを拡張し、そのフィールドを継承する方法があるかどうか疑問に思いました。たとえば、これは私が欲しいものです:
message Parent {
required string common1 = 0;
optional string common2 = 1;
}
message Child1 { // can we extend the Parent?
// I want common1, common2 to be fields here
required int c1 = 2;
required string c2 = 3;
}
message Child2 { // can we extend Parent?
// I want common1, common2 to be fields here
repeated int c3 = 2;
repeated string c4 = 3;
}
Child1とChild2には、Parentのフィールドcommon1とcommon2(および場合によってはそれ以上)も含まれます。
これは可能ですか?もしそうなら、どのように?
これはあなたの質問に対する正確な答えではありませんが、共通のパラメータを共有するためにこのようなことを行うことができます。
message Child1 {
required int c1 = 2;
required string c2 = 3;
}
message Child2 {
required int c1 = 2;
required string c2 = 3;
}
message Request {
required string common1 = 0;
optional string common2 = 1;
oneof msg { Child1 c1 = 2; Child2 c2 = 3; }
}
他のオプションは使用することですextendキーワード
message Parent {
required string common1 = 0;
optional string common2 = 1;
}
message Child1 {
extend Parent
{
optional Child1 c1 = 100;
}
required int c1 = 2;
required string c2 = 3;
}