1

我试图创建一个实现 IList 的简单类。但是,除非我首先将 DiskBackedCollection 转换为 IList,否则这些成员不可用。我怎样才能使它在没有铸造的情况下可用?

public partial class DiskBackedCollection<T> : IList<T>
{
    private List<T> _underlyingList = new List<T>();

    int IList<T>.IndexOf(T item)
    {
        return _underlyingList.IndexOf(item);
    }

    T IList<T>.this[int index]
    {
        get
        {
            return _underlyingList[index];
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }

    int ICollection<T>.Count
    {
        get
        {
            return _underlyingList.Count;
        }
    }

    IEnumerator<T> IEnumerable<T>.GetEnumerator()
    {
        return new DiskBackedCollectionEnumerator(this);
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return new DiskBackedCollectionEnumerator(this);
    }
}
4

2 回答 2

2

这是因为每个成员IList<T>.面前都有。删除它,它们应该会出现。

实现接口成员IList<T>.前面有一个称为显式实现

于 2013-05-25T13:48:40.020 回答
0

实现接口要求的方法必须是公开的。你的不是。

此外,您需要删除显式实现:

public int Count
{
  get
  {
    return _underlyingList.Count;
  }
}
于 2013-05-25T13:53:04.233 回答