2

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

public void Save(BindingList<T> items);

我正在尝试使用它来调用它

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

但似乎 C# 没有意识到继承会引发编译时错误,其中所有编写的代码T也将完全正常运行ObjectInheritedFromT,不是吗?

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

4

1 回答 1

3

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

读一读:

协变和逆变常见问题解答

于 2013-01-04T20:55:35.450 回答