でいるProtobufメッセージを展開します。私はメッセージをいるProtobufするために変換したい2つのクラスを持っているサブクラス
[ProtoContract]
class ClassA {
[ProtoMember(1)]
public int b;
[ProtoMember(2)]
public int c;
}
[ProtoContract]
class ClassD : ClassA
{
[ProtoMember(3)]
public int e;
[ProtoMember(4)]
public int f;
}
私は何を達成しようとしていることはbとcを含むにClassAのシリアル化です。 ClassDをシリアライズすると、b、c、e、fが得られます。
これは可能ですか、どのようなアプローチを使用しますか?私はネストされたメッセージを避けようとしています。
私のアプローチを使用すると、ClassDオブジェクトをシリアライズするときに問題が発生します。
ClassD d = new ClassD();
Serialize.Serialize<ClassA>(stream, d);
Serialize.Serialize<ClassD>(stream, d);
上記の両方の試みでは、シリアル化されたデータにはClassDのプロパティのみが含まれ、ClassAのプロパティは含まれません。 ClassDのプロパティの少なくともいずれも最初のケースで直列化されるとは限りません。 と私はClassAとClassDの両方を2番目のケースで直列化したいと思います。
どのようにこの問題にアプローチしますか?
はいこの単独では動作しますが、わずかに異なるメッセージレイアウトが導入されます。それ以外の方法がない場合、私はClassAにすべてのプロパティを移動し、 "ClassD"関連のものをオプションとしてマークすることを検討しています。 – hultqvist
@phq v2では "そのまま"することができます。私は後で見てみましょう - それはフォーク継承の目的では動作しませんが(つまり、DをAとして送信すると、Aとして非直列化されます) - チェックする必要があります –