Я создаю экземпляр a List<T>
одномерных массивов Int32
путем отражения. Когда я создаю экземпляр списка, используя:
Type typeInt = typeof(System.Int32);
Type typeIntArray = typeInt.MakeArrayType(1);
Type typeListGeneric = typeof(System.Collections.Generic.List<>);
Type typeList = typeListGeneric.MakeGenericType(new Type[] { typeIntArray, });
object instance = typeList.GetConstructor(Type.EmptyTypes).Invoke(null);
Я вижу это странное поведение в самом списке:
Если я взаимодействую с ним через отражение, он, кажется, ведет себя нормально, однако, если я попытаюсь применить его к его фактическому типу:
List<int[]> list = (List<int[]>)instance;
Я получаю это исключение:
Невозможно применить объект типа 'System.Collections.Generic.List`1 [System.Int32 [*]]' для ввода 'System.Collections.Generic.List`1 [System.Int32 []]'.
Любые идеи, которые могут быть причиной этого или как его решить? Я работаю в visual studio 2010 express on.net 4.0.