internal static object Resolve(this Module module, MetadataToken token) { switch (token.TokenType) { case TokenType.Method: case TokenType.MethodSpec: return(module.ResolveMethod(token.ToInt32(), universalArguments, universalArguments)); case TokenType.MemberRef: return(module.ResolveMember(token.ToInt32(), universalArguments, universalArguments)); case TokenType.Field: return(module.ResolveField(token.ToInt32(), universalArguments, universalArguments)); case TokenType.TypeDef: case TokenType.TypeRef: case TokenType.TypeSpec: return(module.ResolveType(token.ToInt32(), universalArguments, universalArguments)); case TokenType.Signature: return(module.ResolveSignature(token.ToInt32())); case TokenType.String: return(module.ResolveString(token.ToInt32())); default: throw new NotSupportedException($"Token type ${token.TokenType} is not supported"); } }
public static MethodBase ResolveMethod(Module module, MetadataToken token) { switch (token.TokenType) { case TokenType.MethodSpec: case TokenType.Method: return(module.ResolveMethod(token.ToInt32(), universalArguments, universalArguments)); case TokenType.MemberRef: var member = module.ResolveMember(token.ToInt32(), universalArguments, universalArguments); switch (member.MemberType) { case MemberTypes.Constructor: case MemberTypes.Method: return((MethodBase)member); default: return(null); } default: return(null); } }
private static byte[] GetMethodSignature(Module module, MetadataToken methodSignatureToken) { return(module == null || methodSignatureToken.RID == 0 ? new byte[0] : module.ResolveSignature(methodSignatureToken.ToInt32())); }
protected override object ResolveToken(MetadataToken token) { return(DynamicMethodHelpers.Resolve(scope[token.ToInt32()])); }