我试图在Windwos 8商店应用程序中使用Reflection调用方法。我尝试使用this.GetType()从基类方法获取所有方法的列表.GetTypeInfo()。DeclaredMethods。
var methodList = base.GetType().GetTypeInfo().DeclaredMethods;
我能够得到所有 在子类中声明的方法并调用它们。但我无法获得基类中定义的方法列表 这种方法有什么问题? 这个项目使用.Net for Windows商店构建
答案 0 :(得分:4)
GetType().GetRuntimeMethods()
这种方法给了我想要的东西。 在运行时期间获得对象内的所有方法。
答案 1 :(得分:1)
你必须手动完成:
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();
答案 2 :(得分:-1)
请注意.DeclaredMethods
是该类的属性。这是按预期工作的。
您想要的代码(我认为)是
var methodList = base.GetType().GetMethods();