我正在尝试在 Windwos 8 商店应用程序中使用反射来调用方法。我尝试使用 this.GetType().GetTypeInfo().DeclaredMethods 从基类方法获取所有方法的列表。
var methodList = base.GetType().GetTypeInfo().DeclaredMethods;
我能得到所有
在子类中声明方法并调用它们。但我无法获取基类中定义的方法列表。
这种方法有什么问题吗?
该项目使用 .Net for Windows store 构建
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();
Type type = GetType(); //In this case Type of current class
MethodInfo methodInfo = null;
do
{
methodInfo = type.GetMethod(methodName, BindingFlags.Instance |
BindingFlags.NonPublic);
type = type.BaseType;
} while (methodInfo == null && type != null);
注意
.DeclaredMethods
是类的一个属性。这正在按预期工作。
你想要的代码(我认为)是
var methodList = base.GetType().GetMethods();