我已经从基类创建了一个派生类,并将派生类对象添加到基类集合。当我尝试将集合对象强制转换为派生类时,它会抛出错误而我无法获取我的覆盖方法和属性。我怎么能绕过这个。?
我试图在wpf inkcanvas中覆盖笔划类。但是可用的集合是基础墨水集合。因此,在序列化和脱盐后,我添加的新属性无法访问。请帮助
答案 0 :(得分:2)
您的问题是StrokeCollection
实现了一个自定义TypeConverter
,它使用StrokeCollection.Save()
方法以高效的二进制格式Ink Serialization Format(ISF)序列化笔划数据。当您的笔划转换为ISF时,所有额外数据都将丢失,因此当重新加载它们时,它们将被实例化为普通Stroke
对象(而不是您的子类)。这就是为什么你不能将它们转换为你的子类。
您的一些选择是:
StrokeCollection
并为您的子类实现新的TypeConverter
TypeConverter
StrokeCollection
(例如,将Strokes
复制到List<Stroke>
并序列化)