如何使用反射获取基类中声明的方法

本文关键字:声明 方法 基类 何使用 反射 获取 | 更新日期: 2023-09-27 18:00:49

我正试图在Windwos 8存储应用程序中使用反射来调用方法。我试图使用这个从基类方法中获得所有方法的列表。GetType((.GetTypeInfo((.声明方法.

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

我可以得到所有在子类中声明的方法并调用它们。但我无法获得基类中定义的方法列表
这种方法有什么问题?这个项目是使用.Net为Windows商店构建的

如何使用反射获取基类中声明的方法

GetType().GetRuntimeMethods()

这种方法得到了我想要的。在运行时获取对象内部存在的所有方法。

您必须手动完成:

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();

请注意,.DeclaredMethods是类上的一个属性。这是按预期进行的。

你想要的代码(我想(是

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