如何获得在基类中使用反射声明的方法?(How to get methods declared in

2019-10-23 15:16发布

我想援引的Windwos 8商店应用程序使用反射的方法。 我试图让使用this.GetType从基类方法的所有方法列表()。GetTypeInfo的()。DeclaredMethods。

var methodList = base.GetType().GetTypeInfo().DeclaredMethods;

我能够获得在子类中声明的所有方法和调用它们。 但我无法得到的基类中定义的方法列表。
什么是错的办法? 该项目使用的.Net的Windows商店而建

Answer 1:

GetType().GetRuntimeMethods()

这种方法给了我想要的。 得到了所有目前运行期间对象内部的方法。



Answer 2:

你必须手动完成:

public static class TypeInfoEx
{
    public static MethodInfo[] GetMethods(this TypeInfo type)
    {
        var methods = new List<MethodInfo>();

        while (true)
        {
            methods.AddRange(type.DeclaredMethods);

            Type type2 = type.BaseType;

            if (type2 == null)
            {
                break;
            }

            type = type2.GetTypeInfo();
        }

        return methods.ToArray();
    }
}

接着

Type type = typeof(List<int>);
TypeInfo typeInfo = type.GetTypeInfo();
MethodInfo[] methods = typeInfo.GetMethods();


Answer 3:

请注意, .DeclaredMethods是在类的属性。 这是工作的打算。

你想(我认为)的代码

var methodList = base.GetType().GetMethods();


文章来源: How to get methods declared in Base class using Reflection?