簡體   English   中英

C#中的自定義序列化程序和繼承

[英]Custom serializer and inheritence in C#

我正在學習有關C#的序列化的知識,但我掌握了一些基礎知識,但是現在我正在嘗試一些更復雜的事情,並且正在尋找最佳實踐的指導(我可以實現我想要的,我只是想知道“正確” /最簡單/最少代碼/最可靠的方法)。

我有一條由路段組成的賽道。 每個節類型都繼承自一個常見的TrackSection類。 TrackSection類保存了大量關於幾何圖形和其他我不想保存的數據,並且在調用構造函數時需要一些上下文信息,因此我實現了ISerializable接口並提供了自己的方法來處理(de )序列化。 從TrackSection繼承的類要簡單得多,我很樂意將其所有字段自動序列化,但是我假設由於基類是ISerializable,所以它們可能也需要手動進行(我添加了反序列化構造函數,並在每個實例中調用基類的反序列化構造函數)。 關於序列化,盡管我不確定該怎么做,我希望ISerializable的GetObjectData()方法是虛擬的,因此可以在子類中擴展序列化。 我是否只需要實現從基類的GetObjectData()調用的我自己的虛擬方法,還是我將這一切搞錯了?

就像我說的那樣,我可以使用它,但是任何更好的解決方案或關於我正在做的事情的任何一般性提示都將不勝感激,因為我不禁感到自己的解決方案比需要的復雜。 謝謝。

除非您在需要實現ISerializable的事情上做某件事,否則,您可以改為使用Serializable屬性標記該類,並將不需要序列化的字段標記為NonSerialized

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM