[英]How do I convert a Generic IList<T> to IList?
我想創建一個帶有通用IList<T>
的ListCollectionView
,但構造函數獲取一個非泛型的IList
。 如何將列表從IList<T>
轉換為IList
?
如果有另一種方法來創建一個具有通用IList<T>
的ListCollectionView
我想聽聽:)
令人討厭的是, IList<T>
是那些沒有實現其非通用對應IList
接口之一。
如果你能找到一種方法來傳遞List<T>
而不是IList<T>
(或其他一些實現IList
以及IList<T>
,比如ObservableCollection<T>
),那將是最簡單的。 這可能意味着更改您的應用程序,以便傳遞List<T>
或其他內容而不是IList<T>
。
否則,您可能必須使用IList<T>
的元素創建一個新的List<T>
IList<T>
,並傳遞它(即myList.ToList()
)。 請注意,這意味着您已創建了列表的副本,因此對原始文件的更改不會反映在副本中。 特別是, ListCollectionView
檢查源集合是否實現INotifyCollectionChanged
,如果是,則訂閱集合已更改事件:如果您創建列表副本,這顯然不起作用。
List<T>
實現IList
( IList<T>
不實現)。 從IList<T>
創建List<T>
並將其傳遞給ListCollectionView
構造函數:
ListCollectionView lcv = new ListCollectionView(new List<YourType>(yourIList));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.