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

◆ GetParameters() [2/2]

static ParameterInfo[] System.Reflection.RuntimeParameterInfo.GetParameters ( IRuntimeMethodInfo methodHandle,
MemberInfo member,
Signature sig,
out ParameterInfo returnParameter,
bool fetchReturnParameter )
inlinestaticprivate

Definition at line 87 of file RuntimeParameterInfo.cs.

88 {
89 returnParameter = null;
90 int num = sig.Arguments.Length;
91 ParameterInfo[] array = (fetchReturnParameter ? null : ((num == 0) ? Array.Empty<ParameterInfo>() : new ParameterInfo[num]));
92 int methodDef = RuntimeMethodHandle.GetMethodDef(methodHandle);
93 int num2 = 0;
95 {
96 MetadataImport metadataImport = RuntimeTypeHandle.GetMetadataImport(RuntimeMethodHandle.GetDeclaringType(methodHandle));
97 metadataImport.EnumParams(methodDef, out var result);
98 num2 = result.Length;
99 if (num2 > num + 1)
100 {
101 throw new BadImageFormatException(SR.BadImageFormat_ParameterSignatureMismatch);
102 }
103 for (int i = 0; i < num2; i++)
104 {
105 int num3 = result[i];
106 metadataImport.GetParamDefProps(num3, out var sequence, out var attributes);
107 sequence--;
108 if (fetchReturnParameter && sequence == -1)
109 {
110 if (returnParameter != null)
111 {
112 throw new BadImageFormatException(SR.BadImageFormat_ParameterSignatureMismatch);
113 }
115 }
116 else if (!fetchReturnParameter && sequence >= 0)
117 {
118 if (sequence >= num)
119 {
120 throw new BadImageFormatException(SR.BadImageFormat_ParameterSignatureMismatch);
121 }
122 array[sequence] = new RuntimeParameterInfo(sig, metadataImport, num3, sequence, attributes, member);
123 }
124 }
125 }
127 {
128 if (returnParameter == null)
129 {
130 returnParameter = new RuntimeParameterInfo(sig, MetadataImport.EmptyImport, 0, -1, ParameterAttributes.None, member);
131 }
132 }
133 else if (num2 < array.Length + 1)
134 {
135 for (int j = 0; j < array.Length; j++)
136 {
137 if (array[j] == null)
138 {
139 array[j] = new RuntimeParameterInfo(sig, MetadataImport.EmptyImport, 0, j, ParameterAttributes.None, member);
140 }
141 }
142 }
143 return array;
144 }
RuntimeParameterInfo(RuntimeParameterInfo accessor, RuntimePropertyInfo property)
static bool IsNullToken(int token)

References System.Reflection.RuntimeParameterInfo.RuntimeParameterInfo(), System.array, System.SR.BadImageFormat_ParameterSignatureMismatch, System.Reflection.MetadataImport.EmptyImport, System.RuntimeMethodHandle.GetDeclaringType(), System.RuntimeTypeHandle.GetMetadataImport(), System.RuntimeMethodHandle.GetMethodDef(), and System.Reflection.MetadataToken.IsNullToken().