在C#中,使用Delegate类来调用构造函数

时间:2013-04-04 14:40:14

标签: c#

有一种方法定义如下:

public static void MyMethod(Delegate action, parames object[] parameters)
{
   action.DynamicInvoke(parameters);
   //Do something
}

到目前为止,这个方法非常适合接收具有任意数量参数的各种方法和函数,但我想知道是否有一种方法可以将构造函数作为Delegate参数传递。

感谢您的帮助。

2 个答案:

答案 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);
}