[英]Serialisation with inheritance in protobuf-net
鑒於.proto看起來像這樣:
message Base {
string Dummy = 1
}
message Derived {
Base Super = 1
string Parp = 2
}
......還有一些C#之類的東西:
public class Base {
public string Dummy;
}
public class Derived : Base {
public string Parp
}
如何才能在protobuf-net中自定義序列化才能做到這一點? 最初我開始考慮使用TypeModel並為Base MetaType調用AddSubType,但是它似乎為Base創建了所有派生類的可選字段的類型定義(即與我需要的相反的方式)
我以為自己可以自己走層次結構,但是看看TypeModel,它似乎支持將類型提供給Deserialise,但它在序列化期間使用value.GetType()。 即便如此,我還不清楚如何做到這一點。 我唯一的選擇是使用ProtoWriter手動編寫每個字段嗎? 這是我目前正在嘗試的,但我希望有一個更簡單的方法。
首先要注意的是protobuf本身不支持繼承。 這沒有“官方”布局。 Protobuf-net不會以您希望的方式支持序列化:選擇子類型封裝(而不是基本類型封裝)來解決幾個問題,包括:
但是,您可以手動映射DTO,基本上您的DTO層根本不使用繼承。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.