基类/动作/基础/泛型类型问题

时间:2018-04-04 22:49:44

标签: c# wpf

我有一个基类:

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)

这一切都有效,但我的问题是......对我来说,我不喜欢xxxItemCollectionAction<LazyObservableCollection<xxxItem>>itemsFactory。我认为它应该是Action<xxxItemCollection>,但是我无法将xxxItemCollection传递给基类。错误消息实际上是将其转换为IEnumerable<xxxItem>

派生类中是否有一种方法可以将派生类型传递给基类?或者我应该以不同的方式构建基类?

0 个答案:

没有答案