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

◆ ResolveToken()

override void System.Reflection.Emit.DynamicResolver.ResolveToken ( int token,
out IntPtr typeHandle,
out IntPtr methodHandle,
out IntPtr fieldHandle )
inlinepackage

Definition at line 191 of file DynamicResolver.cs.

192 {
193 typeHandle = default(IntPtr);
194 methodHandle = default(IntPtr);
195 fieldHandle = default(IntPtr);
196 object obj = m_scope[token];
197 if (obj == null)
198 {
199 throw new InvalidProgramException();
200 }
201 if (obj is RuntimeTypeHandle)
202 {
203 typeHandle = ((RuntimeTypeHandle)obj).Value;
204 return;
205 }
206 if (obj is RuntimeMethodHandle)
207 {
208 methodHandle = ((RuntimeMethodHandle)obj).Value;
209 return;
210 }
211 if (obj is RuntimeFieldHandle)
212 {
213 fieldHandle = ((RuntimeFieldHandle)obj).Value;
214 return;
215 }
216 DynamicMethod dynamicMethod = obj as DynamicMethod;
217 if (dynamicMethod != null)
218 {
219 methodHandle = dynamicMethod.GetMethodDescriptor().Value;
220 }
221 else if (obj is GenericMethodInfo genericMethodInfo)
222 {
223 methodHandle = genericMethodInfo.m_methodHandle.Value;
224 typeHandle = genericMethodInfo.m_context.Value;
225 }
226 else if (obj is GenericFieldInfo genericFieldInfo)
227 {
228 fieldHandle = genericFieldInfo.m_fieldHandle.Value;
229 typeHandle = genericFieldInfo.m_context.Value;
230 }
231 else if (obj is VarArgMethod varArgMethod)
232 {
233 if (varArgMethod.m_dynamicMethod == null)
234 {
235 methodHandle = varArgMethod.m_method.MethodHandle.Value;
236 typeHandle = varArgMethod.m_method.GetDeclaringTypeInternal().GetTypeHandleInternal().Value;
237 }
238 else
239 {
240 methodHandle = varArgMethod.m_dynamicMethod.GetMethodDescriptor().Value;
241 }
242 }
243 }

References System.Reflection.Emit.DynamicMethod.GetMethodDescriptor(), System.Reflection.Emit.DynamicResolver.m_scope, System.obj, and System.RuntimeMethodHandle.Value.