IDictionary에서 가져온 값을 사용하여 키와 IList로 IList를 만들어야합니다. 어떻게해야합니까? 제네릭 (목록 <> 및 사전 <>)은 컴파일 타임에 알 수없는 사용자 정의 유형이기 때문에 제 거해야했습니다.C# IDictionary를 두 ILIST로 변환
DataTable을 처리하고 사전을 반환하는 메서드가 있습니다. 사전 키 유형은 런타임에 정의됩니다.
DataTable myDataTable = ....
Type dictionaryKeysType=Type.GetType("myType");
IDictionary myDictionary = ProcessDataTable (myDataTable, dictionaryKeysType);
IList keys= (IList)myDictionary.Keys;
IList values= (IList)myDictionary.Values;
어떻게해야합니까? 제네릭 (목록 <> 및 사전 <>)은 컴파일 타임에 알 수없는 사용자 정의 유형이기 때문에 제 거해야했습니다. 그래서, 방법 althought는 '사전 <>는'반환, 나는 선언 캔트 :
Dictionary<dictionaryKeysType, int> myDictionary = ProcessDataTable (myDataTable, dictionaryKeysType)
그래서 나는 'IDictionary'로 받아야합니다. '사전'에 캐스팅하려고 할 때 나중에 문제가 발생하는 것처럼 'var'를 사용하는 것은 해결책이 아닙니다.
내 코드는 컴파일되지만 IList로 변환 할 때 예외가 발생합니다. 예를 들어 "myType"이 "uint"인 경우 다음과 같이 표시됩니다. ('KeyCollection [System.UInt32, System.Int32]'유형의 개체를 'System.Collections.IList'유형으로 변환 할 수 없습니다.
, 도와주세요 :(
'dic.Keys.ToList();와'd.Values.ToList();와 함께 사용하면 두 개의 병렬 목록이 생성됩니다. –
죄송합니다 : (첫 번째 선택 이었지만 ICollection IDictionary는 .ToList()를 구현하지 않습니다. – Kaikus