protobuf的消息,我有兩個班,我想轉換到protobuf的消息:擴大與子類
[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;
}
我所試圖實現的是ClassA的含B和C序列化。當序列化ClassD時,我會得到b,c,e和f。
這是可能的,或者我應該使用什麼樣的方法?我試圖避免嵌套消息。
使用我的方法序列化ClassD對象時出現問題。
ClassD d = new ClassD();
Serialize.Serialize<ClassA>(stream, d);
Serialize.Serialize<ClassD>(stream, d);
在上面的序列化的數據兩者的嘗試只包含從ClassA的在D類的屬性和無。 我預計至少在ClassD中沒有一個屬性會在第一種情況下被序列化,我希望所有的ClassA和ClassD都在第二種情況下被序列化。
我該如何解決這個問題?
是的,這將單獨工作,但會引入稍微不同的消息佈局。如果沒有其他的方法,我正在考慮將所有屬性移動到ClassA中,並將與「ClassD」相關的屬性標記爲可選項。 – hultqvist
@phq我可能可以在v2中按「原樣」執行操作;我會再看看 - 它不會工作分叉繼承(即,如果您發送一個D作爲A,它將反序列化爲A) - 需要檢查 –