У меня есть пользовательский class MyList<T> : MyBaseList, IList<T>
и некоторые его экземпляры myList1, myList2...
, которые я храню как object
(исходит из отражения, я не могу изменить) в List<object> ListOfLists = new List<object>()
, например, myList1
в штучной упаковке как object
хранится в ListOfLists[0]
и т. д.
Мой класс MyList<T>
реализует:
private List<T> items = new List<T>();
...
IEnumerator IEnumerable.GetEnumerator()
{
return this.items.GetEnumerator();
}
При попытке перебрать каждый элемент myList1, myList2...
как ...
bool Iterate<T>(T targetElem)
{
foreach (var listObj in ListOfLists)
{
var myIList= (IList<T>)listObj;
var myEList = myIList.Cast<MyList<T>>();
foreach (var myList in myEList)
{
foreach (var listElem in myList)
{
if (EqualityComparer<T>.Default.Equals(listElem , targetElem)) return true;
}
}
}
return false;
}
... Я получаю сообщение об ошибке System.InvalidCastException
в foreach (var myList in myEList)
.
Кто-нибудь знает, как решить эту проблему?
Заранее спасибо!