給定一種方法,我需要將其轉換爲委託,以便我可以在其上調用.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]嗎?沒關係,如果它不起作用... –