Метод расширения поиска - PullRequest
0 голосов
/ 07 сентября 2011

Вместо того, чтобы создавать целый новый класс, реализующий ILookup<T>, возможно ли добавить метод расширения в словарь, который его обслуживает?Я думаю кое-что о следующем:

public static void LookupAdd(this Dictionary<T, List<V>> dict, T key, V item)
{
    if (!dict.ContainsKey(key))
    {
        dict.Add(key, new List<T>());
    }
    dict[key].Add(item);
}

Это не компилируется, говоря, что не может идентифицировать типы.Я предполагаю, что мои общие параметры слишком сложны (особенно List<V>)

Ответы [ 2 ]

8 голосов
/ 07 сентября 2011

Вы забыли добавить синтаксис общего параметра:

 public static void LookupAdd<T, V>(this Dictionary<T, List<V>> dictionary, T key, V item)
 {
 }

<T, V> отсутствует.

4 голосов
/ 07 сентября 2011

Try ...

public static void LookupAdd<T,V>(this Dictionary<T, List<V>> dict, T key, V item)
{
    if (!dict.ContainsKey(key))
    {
        dict.Add(key, new List<V>());
    }
    dict[key].Add(item);
}

ОБНОВЛЕНИЕ:

Обратите внимание, что у вас должно быть

new List<V>()

где у вас есть

new List<T>()
...