代码之家  ›  专栏  ›  技术社区  ›  Joseph Hales

具有类型参数的反射GetMethod

  •  1
  • Joseph Hales  · 技术社区  · 7 年前

    下面的线路运行不正常,我不知道为什么。错误: 系统反射TargetParameterCountException:参数与签名不匹配

    以及相关代码行:

    typeof(Resources).GetMethod("LoadAll", new Type[] { typeof(System.String), typeof(System.Type)});
    

    显示Resources类的所有函数显示:

    UnityEngine.Object[] FindObjectsOfTypeAll(System.Type)
    T[] FindObjectsOfTypeAll[T]()
    UnityEngine.Object Load(System.String)
    T Load[T](System.String)
    UnityEngine.Object Load(System.String, System.Type)
    UnityEngine.ResourceRequest LoadAsync(System.String)
    UnityEngine.ResourceRequest LoadAsync[T](System.String)
    UnityEngine.ResourceRequest LoadAsync(System.String, System.Type)
    UnityEngine.Object[] LoadAll(System.String, System.Type)
    UnityEngine.Object[] LoadAll(System.String)
    T[] LoadAll[T](System.String)
    UnityEngine.Object GetBuiltinResource(System.Type, System.String)
    T GetBuiltinResource[T](System.String)
    Void UnloadAsset(UnityEngine.Object)
    UnityEngine.AsyncOperation UnloadUnusedAssets()
    Boolean Equals(System.Object)
    Int32 GetHashCode()
    System.Type GetType()
    System.String ToString()
    System.Reflection.MethodInfo[]
    

    我在试着匹配UnityEngine。对象[]LoadAll(System.String,System.Type)。你有什么想法吗?

    如果您可以为特定于给定类型的“T[]LoadAllT”创建一行返回methodinfo对象,则会得到额外的好处。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Nick Polyderopoulos    7 年前

    问题是,您试图在LoadAll是静态的情况下获取实例级方法。

    试试这个:

    typeof(Resources).GetMethod("LoadAll", 
                                System.Reflection.BindingFlags.Static,   
                                new Type[] { typeof(System.String),typeof(System.Type)},
                                 null);
    
    推荐文章