При попытке получить индекс класса, который наследуется от CollectionBase, я получаю следующую ошибку: Не удается применить индексирование с помощью []
У меня есть класс, который наследует от CollectionBase
,
public NavigationMenuItemsCollection MenuItems { get; set; }
У меня есть метод, который пытается получить элемент из индекса, но он не работает.
public void ActivatePage(int index)
{
NavigationMenuItem navigationMenuItem = (NavigationMenuItem)MenuItems[0];
}
CollectionBase наследует от IList
, ICollection
, а также IEnumerable
, Поэтому я подумал, что это можно проиндексировать. Есть идеи о том, что происходит?
1 ответ
Решение
CollectionBase
инвентарь IList
свойство indexer с явной реализацией интерфейса, означающее, что вам обычно приходится приводить коллекцию как IList
для того, чтобы иметь доступ к нему.
NavigationMenuItem navigationMenuItem = (NavigationMenuItem)((IList)MenuItems)[0];
Если вы можете изменить исходный код NavigationMenuItemsCollection
Вы должны быть в состоянии добавить индексатор к нему самостоятельно, как показано в первом примере здесь.
public class NavigationMenuItemCollection : CollectionBase {
public NavigationMenuItem this[ int index ] {
get {
return( (NavigationMenuItem) List[index] );
}
set {
List[index] = value;
}
}
...