【发布时间】:2017-11-17 14:02:19
【问题描述】:
如何覆盖父级的 ObservableCollection 属性?
我有一个基类
abstract class Base
{
public virtual ObservableCollection<AnotherBaseClass> items
{
get { throw new NotImplementedException(); }
}
}
还有一个子类
class Derived : Base
{
public override ObservableCollection<AnotherDerivedFromAnotherBaseClass> items
{
get { //some stuff }
}
}
如果我这样做,编译器会说:项目必须是 ObservableCollectionAnotherBaseClass> 以匹配被覆盖的成员 Base.Items
我的 AnotherDerivedFromAnotherBaseClass 类继承自 AnotherBaseClass 那么为什么我不能这样做呢?
我怎样才能覆盖这个属性并在子项中保留好项目类型的约束?
【问题讨论】:
-
你不能那样做。你可以让
Base通用。 -
所以,目前我有一个绑定了我的基类的树视图,我需要为每个派生类检索我的项目。我该怎么做?
-
你不能这样做。
ObservableCollection<AnotherDerivedFromAnotherBaseClass>的实例不可分配给ObservableCollection<AnotherBaseClass>。正如 Daniel 建议的那样,您需要将Base设为通用。
标签: c# oop observablecollection