1

我有一个继承自CollectionBase.

public NavigationMenuItemsCollection MenuItems { get; set; }

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

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

在此处输入图像描述

CollectionBase 继承自IListICollectionIEnumerable。所以我认为它可以被索引。关于发生了什么的任何想法?

4

1 回答 1

1

CollectionBase使用显式接口实现来实现IListindexer 属性,这意味着您通常必须将集合转换为 anIList才能访问它。

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;
      }
   }
   ...
于 2015-05-29T05:06:08.660 回答