0
當我嘗試運行以下代碼時,mi.Invoke行中出現錯誤,表示「TargetException:Object與目標類型不匹配」。C#/ Unity反射:TargetException:對象與目標類型不匹配
我見過其他答案,所以他們都說這是Invoke的第一個參數是「this」而不是類型本身的問題,在這裏不是這種情況。
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
只是供參考:真的沒有理由在Unity中做這件事。你只是寫一個遊戲引擎的組件。老實說,它永遠不會工作! – Fattie
可以想象,你是在這之後:http://stackoverflow.com/a/36249404/294884希望它可以幫助 – Fattie
但你爲什麼要用反射調用Update函數?另外,你的'getTypeByName'函數在哪裏? – Programmer