从基类集合访问派生类属性

时间:2010-07-10 11:59:25

标签: c# wpf collections

我已经从基类创建了一个派生类,并将派生类对象添加到基类集合。当我尝试将集合对象强制转换为派生类时,它会抛出错误而我无法获取我的覆盖方法和属性。我怎么能绕过这个。?

我试图在wpf inkcanvas中覆盖笔划类。但是可用的集合是基础墨水集合。因此,在序列化和脱盐后,我添加的新属性无法访问。请帮助

1 个答案:

答案 0 :(得分:2)

您的问题是StrokeCollection实现了一个自定义TypeConverter,它使用StrokeCollection.Save()方法以高效的二进制格式Ink Serialization Format(ISF)序列化笔划数据。当您的笔划转换为ISF时,所有额外数据都将丢失,因此当重新加载它们时,它们将被实例化为普通Stroke对象(而不是您的子类)。这就是为什么你不能将它们转换为你的子类。

您的一些选择是:

  • 子类StrokeCollection并为您的子类实现新的TypeConverter
  • 使用忽略TypeConverter
  • 的其他序列化技术
  • 手动序列化StrokeCollection(例如,将Strokes复制到List<Stroke>并序列化)