我需要一个字典,从值Name
的属性中检索密钥。例如,密钥不是字典本身的一部分,它是存储值的一部分。但是需要使用[]
- 索引运算符访问这些项目。
我手动创建了一些类来执行此操作,我的问题是,是否还没有提供此功能的.NET类,因为我无法相信之前没有人需要此类。
我手动创建了以下内容来解决此请求:
实施NameTable
的班级IEnumerable<T>, IList, IList<T> where T : INameItem
。在内部,这个类使用简单的List<T>
来保存值。
接口INameItem
然后只提供了一个名称为Name
的字符串属性。
现在我在类中创建了一个[]
- indexer运算符来遍历内部List<T>
中的所有项(我知道有一些更好的LINQ方法可以用更少的代码来完成这个,但是我更喜欢LINQ上的自定义迭代,因为我老了):
public T this[string name]
{
get
{
foreach (T content in _items)
{
if (content.Name == name)
{
return content;
}
}
return null;
}
set
{
for (int i = 0; i < _items.Count; i++)
{
T content = _items[i];
if (content.Name == name)
{
_items[i] = value;
break;
}
}
}
}