내가 수집/시퀀스의 모든 유형을 잡고 IDictionary<K, S<V>>
으로 변환됩니다 확장 방법을 쓰기 위해 노력하고있어 (S<V>
) 더 적절한 데이터 구조 인 ILookup<K, V>
에 그 사건들. 이상적으로, 내가 별도 쓰고 싶지 않아 등단일 확장 메서드 <K, IEnumerable을 /은 IList/ICollection에 <V>>
IDictionary<K, IEnumerable<V>>
IDictionary<K, List<V>>
IDictionary<K, ICollection<V>>
S
유형과 인터페이스에서 작동하는 확장 기능을하고 싶습니다 의미 가능한 각각의 콜렉션 유형에 대한 구현 및 유형 유추가 그 작업을 수행하기를 원합니다.
내가 시도한 것은 :
public static ILookup<TKey, TValue>ToLookup<TKey, TCollection, TValue>(
this IDictionary<TKey, TCollection> dictionary)
where TCollection : IEnumerable<TValue>
그러나이 매개 변수 목록에 TValue
이 없기 때문에 추론을 입력하면 알아낼 수없는 - 나는 방법 ToLookup의 형태 인수를 추론 할 수 없다 "GET 사용법 ".
가짜 TValue
형식화 된 매개 변수를 메서드에 추가하는 것보다 다른 방법으로 작동 할 가능성이 있습니까? 예상 사용량
예를 들면 내가 무엇보다도 희망
이 가능하고 내 하나의 확장 메서드를 호출 결과 호출 : 나는 짓을했는지 테스트의 비트에서
var dictOfIEnumerables = new Dictionary<int, IEnumerable<int>>();
var lookupFromIEnumerables = dictOfIEnumerables.ToLookup();
var dictOfICollections = new Dictionary<int, ICollection<int>>();
var lookupFromICollections = dictOfICollections.ToLookup();
var dictOfLists = new Dictionary<int, List<int>>();
var lookupFromLists = dictOfLists.ToLookup();
제발 사용할 때 – Mgetz
일반을 위해 명시 적으로 유형을 지정하십시오. @Mgetz - NotherDev가 형식을 명시 적으로 지정하거나 가짜 인수를 사용하여 형식을 지정하지 않는 것입니다. 예상되는 사용법의 샘플은 아마도 일을 정리할 것입니다. –
예, 앞서 언급 한 것처럼 유형 추론을 통해 작업을 수행하고 싶습니다. 예상되는 사용 예제를 질문에 추가합니다. – NOtherDev