2010-07-10 92 views
0

我已经从基类创建派生类,并已将派生类对象添加到基类集合。当我尝试将集合对象强制转换为派生类时,抛出错误,我无法获得我的重写方法和属性。我该如何解决这个问题。?访问从基类集合派生类属性

我试图重写行程类WPF inkcanvas.But可收集序列化ANS desalinizing后的基墨collection.So的,我添加了新的属性不accessible.Pls帮助

+0

C收集元素应该工作。示例代码真的有帮助。 – Richard 2010-07-10 12:04:38

+0

这也有助于说*你得到了什么*错误。我会猜InvalidCastException,但它可能是其他任何数量的,这取决于它出错的原因。 – 2010-07-10 12:06:31

回答

2

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

你的一些选项有:

  • 子类StrokeCollection和实施新的TypeConverter为你的子类
  • 使用不同的序列化的技术,忽略了TypeConverter
  • 手动序列化您的StrokeCollection(例如,通过复制。将Strokes转换成List<Stroke>并序列化)