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

◆ GetMemberRefToken()

int System.Reflection.Emit.DynamicILGenerator.GetMemberRefToken ( MethodBase methodInfo,
Type[] optionalParameterTypes )
inlineprivate

Definition at line 333 of file DynamicILGenerator.cs.

334 {
335 if (optionalParameterTypes != null && (methodInfo.CallingConvention & CallingConventions.VarArgs) == 0)
336 {
337 throw new InvalidOperationException(SR.InvalidOperation_NotAVarArgCallingConvention);
338 }
339 RuntimeMethodInfo runtimeMethodInfo = methodInfo as RuntimeMethodInfo;
340 DynamicMethod dynamicMethod = methodInfo as DynamicMethod;
341 if (runtimeMethodInfo == null && dynamicMethod == null)
342 {
343 throw new ArgumentException(SR.Argument_MustBeRuntimeMethodInfo, "methodInfo");
344 }
345 ParameterInfo[] parametersNoCopy = methodInfo.GetParametersNoCopy();
346 Type[] array;
347 Type[][] array2;
348 Type[][] array3;
349 if (parametersNoCopy != null && parametersNoCopy.Length != 0)
350 {
351 array = new Type[parametersNoCopy.Length];
352 array2 = new Type[array.Length][];
353 array3 = new Type[array.Length][];
354 for (int i = 0; i < parametersNoCopy.Length; i++)
355 {
356 array[i] = parametersNoCopy[i].ParameterType;
357 array2[i] = parametersNoCopy[i].GetRequiredCustomModifiers();
358 array3[i] = parametersNoCopy[i].GetOptionalCustomModifiers();
359 }
360 }
361 else
362 {
363 array = null;
364 array2 = null;
365 array3 = null;
366 }
367 SignatureHelper memberRefSignature = GetMemberRefSignature(methodInfo.CallingConvention, MethodBuilder.GetMethodBaseReturnType(methodInfo), array, array2, array3, optionalParameterTypes);
368 if (runtimeMethodInfo != null)
369 {
370 return GetTokenForVarArgMethod(runtimeMethodInfo, memberRefSignature);
371 }
372 return GetTokenForVarArgMethod(dynamicMethod, memberRefSignature);
373 }
int GetTokenForVarArgMethod(RuntimeMethodInfo rtMeth, SignatureHelper sig)
override SignatureHelper GetMemberRefSignature(CallingConventions call, Type returnType, Type[] parameterTypes, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers, Type[] optionalParameterTypes)

References System.SR.Argument_MustBeRuntimeMethodInfo, System.array, System.Reflection.MethodBase.CallingConvention, System.Reflection.Emit.DynamicILGenerator.GetMemberRefSignature(), System.Reflection.Emit.MethodBuilder.GetMethodBaseReturnType(), System.Reflection.ParameterInfo.GetOptionalCustomModifiers(), System.Reflection.MethodBase.GetParametersNoCopy(), System.Reflection.ParameterInfo.GetRequiredCustomModifiers(), System.Reflection.Emit.DynamicILGenerator.GetTokenForVarArgMethod(), System.SR.InvalidOperation_NotAVarArgCallingConvention, and System.Reflection.ParameterInfo.ParameterType.

Referenced by System.Reflection.Emit.DynamicILGenerator.EmitCall().