我有問題,在創建類型爲List < MyClass01>的對象「oListType01」並將其分配給類型爲「object」的另一個對象「oObjectType」之後,我無法訪問任何更多函數「ElementAt(1)」。我嘗試通過使用反射,但我總是在「調用」方法中得到異常(參數衝突)。有誰知道爲什麼? 米蘭如何使用反射調用列表<T>的擴展方法「ElementAt」?
MyClass01 oMy1 = new MyClass01();
oMy1._ID = "1";
MyClass01 oMy2 = new MyClass01();
oMy2._ID = "3";
IList<MyClass01> oListType01 = new List<MyClass01>();
oListType01.Add(oMy1);
oListType01.Add(oMy2);
object oObjectType = new object();
oObjectType = oListType01;
從這裏fowrads唯一對象oObjectType可用(向上發生在單獨的函數調用中的實際情況)。在VS oObjectType中顯示了我希望每次反射訪問的兩個元素。
MethodInfo mInfo = typeof(System.Linq.Enumerable).GetMethod("ElementAt").MakeGenericMethod(typeof(object));
object oSingleObject = mInfo.Invoke(oObjectType, new object[] { 1 });
爲什麼你首先將它分配給一個對象? 如果你必須出於某種原因,並且如果在編譯時知道該列表總是包含MyClass01實例的類型,那麼爲什麼不把它重新投入列表,如下所示: ((List )oObjectType).ElementAt(1); –
tclem
2009-12-22 19:19:45
plese看看「答案」,我解釋說在invoke中可以只使用引用oObjectType(不是oListType01而不是MyClass01)。 – milan 2009-12-23 11:11:46