【发布时间】:2010-09-23 13:31:37
【问题描述】:
使用 IEditableCollectionView addNew() 方法添加对象相当不错。但是我不确定它与我的通用代码的效果如何。
我的基类有一个 ObservableCollection。根据用户想要看到的内容,可以用 DerivedA 或 DerivedB (或多个其他派生类型类)填充。它从来没有超过 1 种类型。我对此有以下问题,其中 1 号是主要问题。
1) 调用 addNew() 方法时添加了什么类型的对象。我猜是基数,但不确定。如果 Base 是抽象的呢?无论如何我可以确保它添加了一个特定的类型,或者它是否已经实现了它已经添加了最相关的类型?
2) 在使用派生类时,我是否要求 ObservableCollection 出现问题?
3) 派生类都单独实现 IEditableObject,但 Base 没有。我的愚蠢是错误的,因为我认为当你实现时你必须定义方法。我可以将它们定义为抽象,然后在派生类中覆盖它们,对吗?如果我不这样做,我会遇到 IEditableCollection 的麻烦。
更新:
我成功修复了第 3 项)基类实现 iEditableObject 并将抽象虚拟方法扔到它的派生类中。 addNew 方法不起作用,即使列表中填充了派生项。
我见过一种半解决方案。 .Net framework 4.0 实现了一个名为 AddNewItem 的新方法,您可以在其中定义要添加的项目。应该解决非无参数构造函数和基类的问题。但是我正在使用 3.5
我能做什么?
【问题讨论】:
标签: c# observablecollection ieditableobject icollectionview ieditablecollectionview