我通過反射來實例化單維Int32
陣列的List<T>
。當我實例使用列表:無法投射列表<int[*]>到列表<int[]>用反射實例化
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 []]'。
任何想法可能導致這種情況或如何解決它?我正在使用.net 4.0上的visual studio 2010 express。
我很好奇爲什麼它會在查看當地人時導致奇怪的列表行爲,但現在這個問題已經解決了。謝謝。 – Einherjar