Reflection GetMethod с параметром типа

Следующая строка не работает должным образом, и я не уверен, почему. Ошибка: System.Reflection.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.Object[] LoadAll(System.String, System.Type). Есть мысли в чем может быть дело?

Бонус, если вы можете сделать строку, которая возвращает объект methodinfo для «T [] LoadAllT», специфичный для данного типа.


person Joseph Hales    schedule 20.02.2018    source источник
comment
Проблема в том, что вы пытаетесь получить метод уровня экземпляра, в то время как LoadAll является статическим. Попробуй это. typeof(Resources).GetMethod("LoadAll", System.Reflection.BindingFlags.Static, new Type[] { typeof(System.String), typeof(System.Type)}, null );   -  person Nick Polyderopoulos    schedule 20.02.2018
comment
Пришлось добавить связующее, я принял значение по умолчанию. Но он не находит метод. Вот строка, которую я использовал: return typeof(Resources).GetMethod("LoadAll", System.Reflection.BindingFlags.Static, Type.DefaultBinder, new Type[] { typeof(System.String), typeof(System.Type) }, null);   -  person Joseph Hales    schedule 20.02.2018
comment
Я ошибаюсь, эта строка кода работает, мой тест просто провалился... Если вы скопируете, я отмечу это как ответ.   -  person Joseph Hales    schedule 20.02.2018


Ответы (1)


Проблема в том, что вы пытаетесь получить метод уровня экземпляра, в то время как LoadAll является статическим.

Попробуй это:

typeof(Resources).GetMethod("LoadAll", 
                            System.Reflection.BindingFlags.Static,   
                            new Type[] { typeof(System.String),typeof(System.Type)},
                             null);
person Nick Polyderopoulos    schedule 20.02.2018