2017-02-01 18 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

タイプ 'Type'のオブジェクト(つまり変数' t')に対して 'get_answer'メソッドを呼び出そうとしています。あなたが何をしようとしているのか分かりにくいですが、代わりに 'past_panel.GetComponents ()[0]'に対して実行したいようです。 – DavidG

+0

ありがとう@DavidGそれは働いた! –

答えて

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

t.WhateverTheMethodIs(mov); 

しかしtType、ないその型のオブジェクトでの呼び出しと同じです。その代わりにメソッドを呼び出すためにオブジェクトを渡す必要があります。メソッドが静的である場合はnull。

+0

ありがとう! "t"から "past_panel.GetComponents ()[0]"に変更されました。 –

+0

Cool。この回答があなたの問題を解決した場合は、左上のチェックマークをクリックして、それをマークします。 –