我有一个包含空构造函数的类,并且它接受一个对象数组作为唯一参数。有点像...
public myClass(){ return; }
public myClass(object[] aObj){ return; }
这是我使用的CreateInstance()方法调用
object[] objectArray = new object[5];
// Populate objectArray variable
Activator.CreateInstance(typeof(myClass), objectArray);
它会抛出System.MissingMethodException
并添加一条读取的消息
"类型' myClass'的构造函数找不到"
我所做的一些研究总是将方法称为
Activator.CreateInstance(typeof(myClass), arg1, arg2);
其中arg1和arg2是类型(string,int,bool)而不是通用对象。 如何仅使用对象数组作为参数列表来调用此方法?
注意:我尝试在方法签名中添加另一个变量。有点像...
public myClass(object[] aObj, bool notUsed){ return; }
并且这个代码执行得很好。 我也看过使用反射的方法,但我对这个具体案例特别感兴趣。如果方法签名实际上与传递的参数匹配,为什么会引发此异常?
答案 0 :(得分:13)
将其投放到object
:
Activator.CreateInstance(yourType, (object) yourArray);
答案 1 :(得分:5)
假设您有构造函数:
class YourType {
public YourType(int[] numbers) {
...
}
}
我相信你会通过将你的数组(预期参数)嵌套为params数组的项来激活:
int[] yourArray = new int[] { 1, 2, 4 };
Activator.CreateInstance(typeof(YourType ), new object[] { yourArray });