How to get methods declared in Base class using Reflection?

﹥>﹥吖頭↗ 提交于 2019-12-11 10:54:36

问题


I am trying to invoke methods using Reflection in Windwos 8 store application. I tried to get list of all methods from a base class method using this.GetType().GetTypeInfo().DeclaredMethods.

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

I am able to get all methods declared in the child class and invoke them. But i am unable to get list of methods defined in the base class.
what is wrong with the approach? this project built using .Net for Windows store


回答1:


GetType().GetRuntimeMethods()

This method gave what i wanted. Got all the methods present inside the object during runtime.




回答2:


You have to do it manually:

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

and then

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



回答3:


Notice that .DeclaredMethods is a property on the class. This is working as intended.

The code you want (I think) is

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


来源:https://stackoverflow.com/questions/31175769/how-to-get-methods-declared-in-base-class-using-reflection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!