gpt4 book ai didi

c# - 将 ObservableCollection 传递给采用 ObservableCollection 的函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:54 26 4
gpt4 key购买 nike

所以我有一个

BaseClass

以及继承自基类的几个子类

ChildClass1
ChildClass2

我有ObservableCollections需要就地排序的子类,我无法创建新的 ObservableCollection<ChildClas1> .

所以我写了一个函数

private void Reorder(ObservableCollection<BaseClass>)
{
//sort the collection in place
}

然后我做Reorder(ObservableCollection<ChildClass1>)

编译器提示它不能转换 System.Collections.ObjectModel.ObservableCollection<ChildClass1>ObservableCollection<BaseClass>

我会相信编译器的话,但是我怎样才能做到这一点而不必为每个子类型复制我的重新排序函数?

最佳答案

I will take the compilers word for it

在 SO 上的许多问答中都讨论了为什么不能传递一种类型的集合来替代另一种类型的集合的原因 - 例如,here

how can I achieve this without having to duplicate my reorder function for every single child type?

一种方法是使您的 Reorder 在集合元素的类型上通用,并向类型参数添加约束以指定对象必须派生自您的基类:

void Reorder<T>(ObservableCollection<T> collection) where T : BaseClass {
...
}

关于c# - 将 ObservableCollection<child> 传递给采用 ObservableCollection<parent> 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34687009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com