C# - 使用动态方法'params string[]'调用委托



是否可以调用从动态方法获取参数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中被忽略。

相关内容

  • 没有找到相关文章

最新更新