强制转换为集合接口
本文关键字:集合 接口 转换 | 更新日期: 2023-09-27 18:09:41
加上这个:
public class Widget : IWidget {}
为什么collection2 == null
在这里:
var collection1 = collectionView.SourceCollection as ObservableCollection<Widget>;
var collection2 = collectionView.SourceCollection as ObservableCollection<IWidget>;
其中SourceCollection is ObservableCollection<Widget>
如果集合声明为ObservableCollection<Widget>
,则不能强制转换为ObservableCollection<IWidget>
。我相信这在。net 4中是可能的,但在3.5或更低版本中是不可能的 -更正-参考下面Adam的评论。
要使上述工作,必须将列表声明为ObservableCollection<IWidget>
,然后两个强制转换都将工作。无论如何,你都应该尽可能地使用接口类型。
(ObservableCollection<IWidget>) collectionView.SourceCollection
将抛出异常,如果强制转换是不可能的。