为什么我不能将BindingList <tinherited>用作接受BindingList <t>的方法的参数?</t> </tinherited>

时间:2013-01-04 20:52:04

标签: c# .net inheritance ienumerable bindinglist

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

public void Save(BindingList<T> items);

我试图用

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

但似乎C#没有意识到继承抛出编译时错误,其中为T编写的所有代码对于ObjectInheritedFromT都是完全有效的,不是吗?

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

1 个答案:

答案 0 :(得分:3)

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

请阅读:

Covariance and Contravariance FAQ