使用KeyedList来勾选项目
本文关键字:选项 项目 KeyedList 使用 | 更新日期: 2023-09-27 18:29:56
我用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;
???
}
}
现在我想访问元素。
那么我必须在???以获取Items的信息?
首先,您根本不应该存储Items,因为它们已经由基类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;
}