簡體   English   中英

訪問基類集合中的派生類屬性

[英]Access Derived class properties from base class collection

我已經從基類創建了派生類,並將派生類對象添加到基類collection。稍后,當我嘗試將集合對象強制轉換為派生類時,它會引發錯誤,並且我無法獲取覆蓋方法和屬性。我該如何解決?

我試圖覆蓋wpf墨水畫布中的筆觸類。但是可用的集合是基礎墨水集合。因此,在序列化和脫鹽之后,無法訪問我添加的新屬性。請幫助

您的問題是StrokeCollection實現了一個自定義的TypeConverter ,它使用StrokeCollection.Save()方法以一種稱為墨水序列化格式 (ISF)的有效二進制格式對筆划數據進行了序列化 當您的筆划轉換為ISF時,所有額外的數據都將丟失,因此在重新加載它們時,它們將被實例化為普通的Stroke對象(而不是您的子類)。 這就是為什么您不能將它們強制轉換為子類的原因。

您的一些選擇是:

  • 子類StrokeCollection並為子類實現新的TypeConverter
  • 使用另一種忽略TypeConverter序列化技術
  • 手動序列化您的StrokeCollection (例如,通過將Strokes復制到List<Stroke>並對其進行序列化)

暫無
暫無

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

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