有一种方法定义如下:
public static void MyMethod(Delegate action, parames object[] parameters)
{
action.DynamicInvoke(parameters);
//Do something
}
到目前为止,这个方法非常适合接收具有任意数量参数的各种方法和函数,但我想知道是否有一种方法可以将构造函数作为Delegate参数传递。
感谢您的帮助。
答案 0 :(得分:7)
您必须围绕构造函数构造一个匿名函数,因为构造函数不能直接转换为委托。 (这是因为构造函数不是实际创建对象的东西; newobj
指令创建对象然后调用构造函数来初始化已分配的内存。直接为构造函数创建委托将等同于{{ 1}}指令,对构造函数没有意义。)
例如,给定此类型:
call
你可以这样做:
class Foo {
public Foo(string str) { }
}
答案 1 :(得分:0)
正如cdhowie向您展示的那样,您可以使用当前的方法,但如果需要,可以使用另一个选项来利用Activator.CreateInstance
,因此它看起来像这样:
public static object CreateObject(Type t, params object[] parameters)
{
return Activator.CreateInstance(t, parameters);
}