How to get methods declared in Base class using Reflection?

匿名 (未验证) 提交于 2019-12-03 01:45:01

问题:

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


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