我需要创建一个带有键的IList和带有值的另一个IList,取自IDictionary。我该怎么做?我不得不避免使用泛型(List<>和Dictionary<>),因为它们中的类型是编译时未知的用户定义类型。
我有一个处理DataTable并返回字典的方法。字典键的类型在运行时定义:
DataTable myDataTable = ....
Type dictionaryKeysType=Type.GetType("myType");
IDictionary myDictionary = ProcessDataTable (myDataTable, dictionaryKeysType);
IList keys= (IList)myDictionary.Keys;
IList values= (IList)myDictionary.Values;
我该怎么办?我不得不避免使用泛型(List<>和Dictionary<>),因为它们内部的类型是编译时未知的用户定义类型。所以,虽然该方法返回'Dictionary<>',但我无法声明:
Dictionary<dictionaryKeysType, int> myDictionary = ProcessDataTable (myDataTable, dictionaryKeysType)
所以我必须以“IDictionary”的形式收到它。使用'var'不是解决方案,因为稍后在尝试将其转换为'Dictionary'时会出现问题
我的代码编译但转换为IList时引发异常。例如,如果“myType”是“uint”,我得到:(无法将'KeyCollection [System.UInt32,System.Int32]类型的对象转换为'System.Collections.IList')。
请帮助:(
答案 0 :(得分:1)
我建议;
IList keys = myDictionary.Keys.ToList();
IList values = myDictionary.Values.ToList();
请确保包括:
using System.Linq;
位于文件顶部。
这将允许您访问.ToList()扩展方法。