3

使用 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 工作

有什么我能做的吗?

4

1 回答 1

1

对于此类问题,很高兴记住 .net 框架代码不是黑匣子,您可以使用ILSpy对其进行反汇编,以查看它在做什么,或者 Microsoft 如何让某些东西发挥作用。我建议你看看 4.0 的方法,看看你是否不能在 3.5 中为自己的目的复制它,并将其添加为扩展方法。

于 2011-11-06T20:38:05.320 回答