'Type'不包含'GetMethod'的定义

时间:2017-07-21 05:01:36

标签: c# unity3d windows-store-apps

我一直收到错误:

  

CS1061:'Type'不包含'GetMethod'的定义,不包含   扩展方法'GetMethod'接受类型'Type'的第一个参数   可以找到(你错过了使用指令或程序集   引用?)。

我正在尝试构建Windows应用商店应用!

这是我的代码:

MethodInfo theMethod = itween.GetType().GetMethod (animation.ToString(), new Type[] {
        typeof(GameObject),
        typeof(Hashtable)
});
theMethod.Invoke(this, parameters);

1 个答案:

答案 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;才能识别此方法。