キーを使用して IList を作成し、IDictionary から取得した値を使用して別の IList を作成する必要があります。どうすればいいのですか?ジェネリック (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」の使用は解決策ではありません
私のコードはコンパイルされますが、IList に変換するときに例外が発生します。たとえば、「myType」が「uint」の場合、次のようになります: (「KeyCollection[System.UInt32,System.Int32]」型のオブジェクトを「System.Collections.IList」型に変換できません)。
助けてください :(