web-dev-qa-db-ja.com

Protobufメッセージの拡張

私は多くの異なるスキーマを持っていますが、すべてのスキーマに含まれるフィールドのセットがあります。別のスキーマで親スキーマを拡張し、そのフィールドを継承する方法があるかどうか疑問に思いました。たとえば、これは私が欲しいものです:

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(および場合によってはそれ以上)も含まれます。

これは可能ですか?もしそうなら、どのように?

12
user1413793

これはあなたの質問に対する正確な答えではありませんが、共通のパラメータを共有するためにこのようなことを行うことができます。

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;
}
4
Raheel