Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Invoke() [1/2]

override? object System.Reflection.Emit.DynamicMethod.Invoke ( object? obj,
BindingFlags invokeAttr,
Binder? binder,
object??[] parameters,
CultureInfo? culture )
inline

Definition at line 480 of file DynamicMethod.cs.

481 {
482 if ((CallingConvention & CallingConventions.VarArgs) == CallingConventions.VarArgs)
483 {
484 throw new NotSupportedException(SR.NotSupported_CallToVarArg);
485 }
487 Signature signature = new Signature(m_methodHandle, m_parameterTypes, m_returnType, CallingConvention);
488 int num = signature.Arguments.Length;
489 int num2 = ((parameters != null) ? parameters.Length : 0);
490 if (num != num2)
491 {
492 throw new TargetParameterCountException(SR.Arg_ParmCnt);
493 }
494 bool wrapExceptions = (invokeAttr & BindingFlags.DoNotWrapExceptions) == 0;
495 StackAllocedArguments stackArgs = default(StackAllocedArguments);
496 Span<object> arguments = default(Span<object>);
497 if (num2 != 0)
498 {
499 arguments = CheckArguments(ref stackArgs, parameters, binder, invokeAttr, culture, signature);
500 }
501 object result = RuntimeMethodHandle.InvokeMethod(null, in arguments, signature, constructor: false, wrapExceptions);
502 for (int i = 0; i < arguments.Length; i++)
503 {
504 parameters[i] = arguments[i];
505 }
506 GC.KeepAlive(this);
507 return result;
508 }
RuntimeMethodHandle GetMethodDescriptor()
Span< object > CheckArguments(ref StackAllocedArguments stackArgs, ReadOnlySpan< object > parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)

References System.SR.Arg_ParmCnt, System.Signature.Arguments, System.Reflection.MethodBase.CheckArguments(), System.culture, System.Reflection.Emit.DynamicMethod.GetMethodDescriptor(), System.RuntimeMethodHandle.InvokeMethod(), System.GC.KeepAlive(), System.Span< T >.Length, System.Reflection.Emit.DynamicMethod.m_methodHandle, System.Reflection.Emit.DynamicMethod.m_parameterTypes, System.Reflection.Emit.DynamicMethod.m_returnType, System.SR.NotSupported_CallToVarArg, and System.Reflection.Signature.