【发布时间】:2020-08-13 22:11:18
【问题描述】:
我已经研究了几个小时,但到目前为止还没有运气。 这是我的 C# 代码:
myClassInstance = new MyClass("MyParam", 1);
object[] args = new object[1] { myClassInstance };
MethodInfo methodInfo = GetType().GetMethod(myMethod, BindingFlags.NonPublic | BindingFlags.Instance);
string method = (string)methodInfo.Invoke(this, args);
我导入了 MethodInfo 和 System.Reflection。 Unity 错误是这样的:
ArgumentException: Object of type 'SystemController' cannot be converted to type 'System.Object[]'
它没有指向代码中的特定行,但据我所知,将 myClassInstance 变量转换为对象似乎是一个问题,这对我来说没有意义,因为我相信一切在 C# 中继承自 System.Object。
这是我的班级:
public class MyClass
{
public string var1;
public int var2;
public MyClass(string param1, int param2)
{
var1 = param1;
var2 = param2;
}
}
很明显,我没有展示整个类,但唯一的区别是要存储更多的变量和参数。这些不应该改变任何东西,所以我不会让你厌烦它们。它只是一个带有构造函数的类,不继承任何东西。 对此我能得到的任何帮助将不胜感激。如果您需要更多信息,请告诉我。
【问题讨论】:
-
只是指出,即使这是真的“C#中的所有东西都继承自 System.Object”,也不会匹配 System.Object[](注意数组 [])
-
对不起,如果我是愚蠢的;我不会编写太多 C# 代码。在第二行删除
new object[1]并在myClassInstance之前添加类型转换(object)会起作用吗? -
别担心,这里没有人是愚蠢的 ^^ 有了这段代码,我很难判断它是否适用于这些更改。但是你的错误是关于 SystemController,我在你的帖子中看不到:S
标签: unity3d exception reflection methodinfo