2017-02-01 2 views
0

Я пытаюсь вызвать метод, используя строку, но там проблему:«Объект не соответствует целевому типу» при вызове методов, используя строку в C#

void make_moviment(string mov,Vector3 new_mov){ 
    GameObject past_panel = GameObject.Find(actual_level.ToString()); 
    Type t = Type.GetType(past_panel.GetComponents<MonoBehaviour>()[0].GetType().Name); 
    MethodInfo method = t.GetMethod("get_answer"); 
    method.Invoke(t,new object[] { mov })); <--- PROBLEM HERE 
} 

Там всегда эта ошибка «Объект не сопоставить целевой тип ", связанный с последней строкой. У вас есть какие-нибудь рекомендации?

+1

Пожалуйста, покажите подпись для 'get_answer'. –

+0

Вы пытаетесь вызвать метод get_answer для объекта типа 'Type' (т. Е. Переменной' t'). Трудно сказать, что вы пытаетесь сделать, но похоже, что вы хотите выполнить его вместо 'past_panel.GetComponents () [0]' вместо этого. – DavidG

+0

Спасибо @DavidG это сработало! –

ответ

4
method.Invoke(t,new object[] { mov })); 

То же самое, называя

t.WhateverTheMethodIs(mov); 

t Но это Type, не является объектом этого типа. Вам нужно передать объект, чтобы вместо этого вызвать метод. (Или null, если метод статический).

+0

Спасибо, человек! Просто изменилось с «t» на «past_panel.GetComponents () [0]», и это сработало! –

+0

Прохладный. Если этот ответ решит вашу проблему, вы можете щелкнуть галочкой в ​​левом верхнем углу, чтобы отметить это как сделанное. –

Смежные вопросы