我一直收到错误:
CS1061:'Type'不包含'GetMethod'的定义,不包含 扩展方法'GetMethod'接受类型'Type'的第一个参数 可以找到(你错过了使用指令或程序集 引用?)。
我正在尝试构建Windows应用商店应用!
这是我的代码:
MethodInfo theMethod = itween.GetType().GetMethod (animation.ToString(), new Type[] {
typeof(GameObject),
typeof(Hashtable)
});
theMethod.Invoke(this, parameters);
答案 0 :(得分:2)
要在Windows应用商店应用中使用Reflection,请使用 TypeInfo 类,而不是经典.NET应用程序中使用的 Type 类。
然而,它仍然有一些限制:
在Windows 8.x商店应用中,对某些.NET Framework类型和成员的访问受到限制。例如,您不能使用MethodInfo对象调用.NET 8.x Store应用程序中未包含的.NET Framework方法。
参考:Reflection in the .NET Framework for Windows Store Apps
与您的代码对应的代码段如下:
using System.Reflection; //this is required for the code to compile
var methods = itween.GetType().GetTypeInfo().DeclaredMethods;
foreach (MethodInfo mi in methods)
{
if (mi.Name == animation.ToString())
{
var parameterInfos = mi.GetParameters();
if (parameterInfos.Length == 2)
{
if (parameterInfos[0].ParameterType == typeof(GameObject) &&
parameterInfos[1].ParameterType == typeof(Hashtable))
{
mi.Invoke(this, parameters)
}
}
}
}
请注意,GetTypeInfo
被定义为扩展方法,因此编译器需要using System.Reflection;
才能识别此方法。