2011-09-07 4 views
0

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>)

답변

4

...

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); 
} 

UPDATE :

당신은 당신이

new List<V>() 

을 가져야한다

공지 사항

new List<T>() 
+0

대단히 감사합니다. 이 클래스에는 6 개의 다른 도우미가 있으며 일반 정의가 포함되어 있습니다.이 작업을 수행 할 때 완전히 잊어 버렸습니다! 당신이 그곳에 처음있을 때 당신을 대답으로 표시했습니다. –

8

당신은 일반 매개 변수 구문을 추가 잊어 버린 것을 추측하고있어 다음 <T, V>이없는

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

합니다. 시도

+1

또한 당신이 호출 할 수 없습니다'DICT .Add (key, new List ());''dict이어야합니다. 추가 (키, 새 목록 ()); ' –

+0

문제를 해결해 주셔서 감사합니다. 당신은 나에게서 +1을 얻었지만 나는 에릭에게 대답했다. 모두에게 줄 수 있으면 좋겠어! –

관련 문제