ILGenerator.EmitCall Method
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Puts a call or callvirt instruction onto the Microsoft intermediate language (MSIL) stream to call a varargs method.
Assembly: mscorlib (in mscorlib.dll)
'Declaration Public Overridable Sub EmitCall ( _ opcode As OpCode, _ methodInfo As MethodInfo, _ optionalParameterTypes As Type() _ )
Parameters
- opcode
- Type: System.Reflection.Emit.OpCode
The MSIL instruction to be emitted onto the stream. Must be OpCodes.Call, OpCodes.Callvirt, or OpCodes.Newobj.
- methodInfo
- Type: System.Reflection.MethodInfo
The varargs method to be called.
- optionalParameterTypes
- Type:
System.Type
()
The types of the optional arguments if the method is a varargs method; otherwise, Nothing.
| Exception | Condition |
|---|---|
| ArgumentException | opcode does not specify a method call. |
| ArgumentNullException | methodInfo is Nothing. |
The EmitCall method is used to emit calls to varargs methods because there is no overload of the Emit method that specifies the parameter types of the variable arguments.
To emit calls to methods that do not use the VarArgs calling convention, use the Emit(OpCode, MethodInfo) method overload.
The EmitCall method does not throw an exception when optional parameter types are specified for a method that is not varargs. However, InvalidProgramException is thrown when the call is executed.