小编mil*_*lan的帖子

如何用反射调用List <T>的扩展方法"ElementAt"?

我有问题,在创建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)

c# linq reflection extension-methods

7
推荐指数
1
解决办法
4230
查看次数

如何通过反射调用泛型方法

是否可以用反射调用一个带有"explict type argument" <S>定义的方法,
例如 oObject.Cast<S>()

哪里:

IList <P> oObject = new List <P>();
Run Code Online (Sandbox Code Playgroud)

我试过了

oObject.getType().InvokeMember( "Cast", BindingFlags.InvokeMethod, null, oObject, null)
Run Code Online (Sandbox Code Playgroud)

但它不起作用,有谁知道为什么?


这是完整的测试代码,但它仍然不起作用.最后一行总是产生异常.它可以使它工作吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace reflection_tester
{
    class CBase
    {
        public string Ja = "I am the base";
    }

    class MyClass01 : CBase
    {
        public string _ID;

        public string ID
        {
            get { return _ID; }
            set { _ID = value; }
        }
    }

    class Program
    {

        public static …
Run Code Online (Sandbox Code Playgroud)

c# generics reflection

5
推荐指数
1
解决办法
4055
查看次数

标签 统计

c# ×2

reflection ×2

extension-methods ×1

generics ×1

linq ×1