有一个方法定义如下:
public static void MyMethod(Delegate action, parames object[] parameters)
{
action.DynamicInvoke(parameters);
//Do something
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这个方法可以很好地接收任意数量参数的各种方法和函数,但我想知道是否有一种方法可以将构造函数作为Delegate参数传递.
谢谢您的帮助.
您将不得不围绕构造函数构造一个匿名函数,因为构造函数不能直接转换为委托.(这是因为构造函数不是实际创建对象的东西; 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)