0
次のコードを実行しようとすると、mi.Invoke行に "TargetException:Objectがターゲットタイプと一致しません"というエラーが発生します。C#/ Unity Reflection:TargetException:オブジェクトがターゲットタイプと一致しません
私はSOに関する他の答えを見てきましたが、ここではそうではないタイプ自体ではなく、 "これ"であるInvokeの最初の引数に問題があるといっています。
MethodInfo作成行と呼び出し行は、どちらも同じ変数 "type2"を使用しますが、それらは異なっています。このエラーを修正するにはどうすればよいですか?
//In this example VoxelType is "ConveyorBelt". This is a class with a public Update method, in the same namespace.
Type type2 = getTypeByName (VoxelType)[0]; //Get voxel type
print (type2.Namespace); //Returns null
print (VoxelType); //Returns ConveyorBelt
print (type2);//Returns ConveyorBelt
MethodInfo mi = type2.GetMethod ("Update");
mi.Invoke (type2, null); //Crashes everytime with TargetException
ちょうどFYI:Unityでこれを行う理由はまったくありません。あなたはゲームエンジンのコンポーネントを書くだけです。正直なところ、それは決してうまくいかないでしょう! – Fattie
あなたはこれを後にしていると思われます:http://stackoverflow.com/a/36249404/294884助けてくれるといいです – Fattie
なぜリフレクションでUpdate関数を呼び出そうとしていますか?また、あなたの 'getTypeByName'関数はどこですか? – Programmer