値のプロパティからキーを取得する辞書が必要でしたName
。たとえば、キーは辞書自体の一部ではなく、格納された値の一部でした。ただし、これらのアイテムには[]
-indexing 演算子を使用してアクセスする必要がありました。
これを行うためにいくつかのクラスを手動で作成しました。私の質問は、この機能を提供する .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;
}
}
}
}