我想用通用的ListCollectionView
创建一个IList<T>
,但构造函数得到一个非泛型的IList
。如何将我的列表从IList<T>
转换为IList
?
如果有另一种方法来创建一个ListCollectionView
与通用IList<T>
我想听听:)
令人讨厌的是,IList<T>
是那些没有实现其非通用对应物IList
的接口之一。
如果你能找到一种通过List<T>
而不是IList<T>
(或其他类型实现IList
以及IList<T>
,如ObservableCollection<T>
)的方法,那将是最简单的。这可能意味着更改您的应用程序,以便您传递List<T>
或其他东西而不是IList<T>
。
否则,您可能必须使用List<T>
中的元素创建一个新的IList<T>
,然后传递(即myList.ToList()
)。请注意,这意味着您已创建了列表的副本,因此对原始文件的更改不会反映在副本中。特别是,ListCollectionView
检查源集合是否实现了INotifyCollectionChanged
,并且如果是,则订阅集合更改事件:如果您创建列表副本,这显然不起作用。
List<T>
实施IList
(IList<T>
没有)。从你的List<T>
创建一个IList<T>
并将其传递给ListCollectionView
构造函数:
ListCollectionView lcv = new ListCollectionView(new List<YourType>(yourIList));