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

Ser*_*ero 2 c#

有一个方法定义如下:

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

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

谢谢您的帮助.

cdh*_*wie 7

您将不得不围绕构造函数构造一个匿名函数,因为构造函数不能直接转换为委托.(这是因为构造函数不是实际创建对象的东西; newobj指令创建对象然后调用构造函数来初始化分配的内存.直接为构造函数创建委托将等同于call指令,而不是对建设者有意义.)

例如,给定此类型:

class Foo {
    public Foo(string str) { }
}
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

MyMethod(new Func<string, Foo>(str => new Foo(str)), "a string");
Run Code Online (Sandbox Code Playgroud)