使用IEditableCollectionView addNew()方法添加对象非常不错。但是我不确定它对我的通用代码的效果如何。
我有一个基类的ObservableCollection。根据用户想要查看的内容,可以使用DerivedA或DerivedB(或多个其他派生类型类)填充它。它从来没有超过1种类型。我对此有以下问题,第1号是主要问题。
1)调用addNew()方法时添加了什么类型的对象。我猜基地但不确定。如果Base是抽象的怎么办?无论如何,我可以确保它添加一个特定的类型,或者它是否实现了它已经添加了最相关的类型?
2)使用派生类时,我是否在使用ObservableCollection时遇到问题?
3)派生类都是单独实现IEditableObject但是Base没有。我的愚蠢是因为我认为你实施时必须定义方法。我可以将它们定义为抽象,然后在Derived类中重写它们吧?如果我不这样做,我将遇到IEditableCollection的问题。
更新:
我成功修复了项目3)基类实现了iEditableObject,并将抽象虚拟方法抛出到它的派生类。即使列表中填充了派生项,addNew方法也不起作用。
我见过一个半解决方案。 .Net framework 4.0实现了一个名为AddNewItem的新方法,您可以在其中定义要添加的项目。应该用非参数构造函数和基类来解决问题。但是我在3.5
工作我能做什么?
答案 0 :(得分:1)
对于这类问题,很高兴记住.net框架代码不是黑盒子,您可以用ILSpy对其进行反汇编,以查看它正在做什么,或者微软是如何运作的。我建议您查看4.0方法,看看您是否可以在3.5中为自己的目的复制它,并将其添加为扩展方法。