0

我有一个用 C# 编写的小类来保存一个数据结构列表,该列表带有一个特殊的键来分组项目。

public class KeyedList<TKey, TItem> : List<TItem>
{
    public TKey Key { protected set; get; }
    public IEnumerable<TItem> Items { protected set; get; }

    public KeyedList(TKey key, IEnumerable<TItem> items)
        : base(items)
    {
        Key = key;
        Items = items;
    }

    public KeyedList(IGrouping<TKey, TItem> grouping)
        :base (grouping)
    {
        Key = grouping.Key;
        ???
    }
}

现在我想访问元素。

所以我必须在 ??? 获取项目的信息?

4

1 回答 1

0

首先,您根本不应该存储 Items,因为它们已经由 base class: 处理List<TItem>

但是如果你真的想这样做,你可以grouping直接Items使用,因为IGrouping<TKey, TItem>实现IEnumerable<TItem>

public KeyedList(IGrouping<TKey, TItem> grouping)
    :base (grouping)
{
    Key = grouping.Key;
    Items = grouping;
}

您还可以将Items属性指向KeyedList实例本身,因为它实现List<TItem>

public KeyedList(IGrouping<TKey, TItem> grouping)
    :base (grouping)
{
    Key = grouping.Key;
    Items = this;
}
于 2013-09-02T09:44:07.110 回答