mil*_*lan 7 c# linq reflection extension-methods
我有问题,在创建List <MyClass01>类型的对象"oListType01"之后,并在将其分配给另一个类型为"object"的objet"oObjectType"后,我无法访问任何更多的函数"ElementAt(1)".我尝试使用反射,但我总是在"调用"方法中获得异常(参数冲突).有谁知道为什么?米兰
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;
Run Code Online (Sandbox Code Playgroud)
从这里fowrads只有对象oObjectType可用(在实际情况下向上发生在单独的函数调用中).在VS oObjectType中显示了我想要每次反射访问的两个元素.
MethodInfo mInfo = typeof(System.Linq.Enumerable).GetMethod("ElementAt").MakeGenericMethod(typeof(object));
object oSingleObject = mInfo.Invoke(oObjectType, new object[] { 1 });
Run Code Online (Sandbox Code Playgroud)
我会假设你有正当理由这样做,但似乎有点不对劲.这就是说这里有一些代码可以完成你想要做的事情.
MethodInfo mInfo = typeof(System.Linq.Enumerable).GetMethod("ElementAt").MakeGenericMethod(typeof(MyClass01));
object oSingleObject = mInfo.Invoke(oObjectType, new object[] { oObjectType, 1 });
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到List中的第二个元素.