如何转换通用IList IList?

问题描述 投票:5回答:2

我想用通用的ListCollectionView创建一个IList<T>,但构造函数得到一个非泛型的IList。如何将我的列表从IList<T>转换为IList

如果有另一种方法来创建一个ListCollectionView与通用IList<T>我想听听:)

c# wpf
2个回答
6
投票

令人讨厌的是,IList<T>是那些没有实现其非通用对应物IList的接口之一。

如果你能找到一种通过List<T>而不是IList<T>(或其他类型实现IList以及IList<T>,如ObservableCollection<T>)的方法,那将是最简单的。这可能意味着更改您的应用程序,以便您传递List<T>或其他东西而不是IList<T>

否则,您可能必须使用List<T>中的元素创建一个新的IList<T>,然后传递(即myList.ToList())。请注意,这意味着您已创建了列表的副本,因此对原始文件的更改不会反映在副本中。特别是,ListCollectionView检查源集合是否实现了INotifyCollectionChanged,并且如果是,则订阅集合更改事件:如果您创建列表副本,这显然不起作用。


4
投票

List<T>实施IListIList<T>没有)。从你的List<T>创建一个IList<T>并将其传递给ListCollectionView构造函数:

ListCollectionView lcv = new ListCollectionView(new List<YourType>(yourIList));
© www.soinside.com 2019 - 2024. All rights reserved.