给定一种方法,我需要将其转换为委托,以便我可以在其上调用.DynamicInvoke()
。因此,举例来说,给定方法Foo
,我不能做new Action<dynamic, dynamic>(Foo)
,因为我实际上并不知道Foo
必须有2个参数。如何将具有未知数量参数的方法转换为System.Delegate?
那么如何在不知道参数的情况下将方法转换为Delegate
?
此问题与代码生成有关。我想写生成C#代码的方法,把它归结为:
void GenerateCall(string method, params string[] args) {
Console.WriteLine($"Delegate del_{method} = {/*Convert method to delegate here*/};");
Console.WriteLine($"del_{method}.DynamicInvoke({string.Join(", ", args)});");
}
分配的方法给一个变量是我在做什么重要,Console.WriteLine($"{method}({string.Join(", ", args)})")
不够好。
你试过'params'?你必须创建你自己的代表。我不是100%确定这是否是重复的https://stackoverflow.com/a/1136510/495455,但它非常非常相似。 –
@JeremyThompson不幸的是,这不是我的问题。这并不是说该方法有一个'params'参数,但我不知道它有什么样的参数。 – Pavel
你能提供[mcve]吗?没关系,如果它不起作用... –