我在尝试获取从 CollectionBase 继承的 class 的索引时收到以下错误:无法使用 [] 应用索引

I receive the following error while trying to get the index of a class that inherits from CollectionBase: Cannot apply indexing with []

我有一个 class 继承自 CollectionBase

public NavigationMenuItemsCollection MenuItems { get; set; }

我有一个方法试图从索引中获取项目,但它不起作用。

public void ActivatePage(int index)
{
   NavigationMenuItem navigationMenuItem = (NavigationMenuItem)MenuItems[0];
}

CollectionBase 继承自 IListICollectionIEnumerable。所以我认为它可以被索引。对正在发生的事情有什么想法吗?

CollectionBase 使用显式接口实现 IList 的索引器 属性,这意味着您通常必须将集合转换为 IList访问它。

NavigationMenuItem navigationMenuItem = (NavigationMenuItem)((IList)MenuItems)[0];

如果你能修改NavigationMenuItemsCollection的源代码,你应该能自己给它添加一个索引器,如第一个例子here

public class NavigationMenuItemCollection : CollectionBase  {

   public NavigationMenuItem this[ int index ]  {
      get  {
         return( (NavigationMenuItem) List[index] );
      }
      set  {
         List[index] = value;
      }
   }
   ...