簡體   English   中英

C#-從動態方法中調用帶有'params string []'的委托

[英]C# - Calling a Delegate with 'params string[]' from a Dynamic Method

是否可以從動態方法中調用以params string[]作為參數的delegate

例:

delegate string Del(params string[] arg);
...
Del f = args => "Called successfully.";
...
var mb = typeBuilder.DefineMethod(
                    "MyMethod",
                    MethodAttributes.Public | MethodAttributes.Virtual,
                    typeof(string),
                    new Type[] {typeof(string), typeof(string)});
...
var generator = mb.GetILGenerator();
...
generator.Emit(OpCodes.Ldarg_0);
generator.Emit(OpCodes.Ldarg_1);
generator.Emit(OpCodes.Ldarg_2);
...
generator.Emit(OpCodes.Call, f.GetType().GetMethod("Invoke"));

因為每當我運行上面的代碼時,它就會為我提供:

Unhandled Exception: System.InvalidProgramException: JIT Compiler encountered an internal limitation.

我在這里做錯什么了嗎?

您必須傳遞字符串數組。 “ params”關鍵字僅用於c#/ vb中的語法糖,但在IL中被忽略。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM