我有一个基类:
public class LazyObservableCollection<T> : ObservableCollection<T>,
IEnumerable,
ICollection
它目前有一个构造函数,如下所示:
public LazyObservableCollection(Action<LazyObservableCollection<T>> itemsFactory)
我们的想法是拥有一个懒惰的可加载ObservableCollection并能够提供工厂,以便用户可以执行以下操作:
new LazyObservableCollection<string>(x =>
{
x.Add("Item1");
x.Add("Item2");
});
显然,这是一个微不足道的例子,它更适用于确定物品价格昂贵并且您不想一次装载所有物品的情况。
然后我实现了一个利用这个类的自定义控件。我派出了一个类似的类:
public class xxxItemCollection : LazyObservableCollection<xxxItem>
有一个像这样的构造函数:
public xxxItemCollection(Action<LazyObservableCollection<xxxItem>> itemsFactory)
: base(itemsFactory)
这一切都有效,但我的问题是......对我来说,我不喜欢xxxItemCollection
为Action<LazyObservableCollection<xxxItem>>
取itemsFactory
。我认为它应该是Action<xxxItemCollection>
,但是我无法将xxxItemCollection
传递给基类。错误消息实际上是将其转换为IEnumerable<xxxItem>
。
派生类中是否有一种方法可以将派生类型传递给基类?或者我应该以不同的方式构建基类?