0

値のプロパティからキーを取得する辞書が必要でした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;
            }
        }
    }
}
4

0 に答える 0