gpt4 book ai didi

c# - 为什么我不能将 BindingList 用作采用 BindingList 的方法的参数?

转载 作者:行者123 更新时间:2023-11-30 22:21:43 24 4
gpt4 key购买 nike

基本上我有一个具有以下签名的方法:

public void Save(BindingList<T> items);

我正在尝试使用

调用它
classInstance.Save(items); //items = BindingList<ObjectInheritedFromT>

但似乎 C# 没有意识到继承引发编译时错误,其中所有代码都是为 T 编写的将完全适用于 ObjectInheritedFromT还有,不是吗?

有解决办法吗?我意识到如果它是 IEnumerable 就可以工作, 但后来(奇怪的是)结果是 BindingList<>没有实现 IEnumerable,我需要执行诸如 Remove 之类的操作和 Add .

最佳答案

因为 BindingList<T>未声明为 BindingList<out T> - 它不支持协方差

读一读:

Covariance and Contravariance FAQ

关于c# - 为什么我不能将 BindingList<TInherited> 用作采用 BindingList<T> 的方法的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164796/

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