我想援引的Windwos 8商店应用程序使用反射的方法。 我试图让使用this.GetType从基类方法的所有方法列表()。GetTypeInfo的()。DeclaredMethods。
var methodList = base.GetType().GetTypeInfo().DeclaredMethods;
我能够获得在子类中声明的所有方法和调用它们。 但我无法得到的基类中定义的方法列表。
什么是错的办法? 该项目使用的.Net的Windows商店而建
我想援引的Windwos 8商店应用程序使用反射的方法。 我试图让使用this.GetType从基类方法的所有方法列表()。GetTypeInfo的()。DeclaredMethods。
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();