コード例 #1
0
        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");
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
 private static byte[] GetMethodSignature(Module module, MetadataToken methodSignatureToken)
 {
     return(module == null || methodSignatureToken.RID == 0
                ? new byte[0]
                : module.ResolveSignature(methodSignatureToken.ToInt32()));
 }
コード例 #4
0
 protected override object ResolveToken(MetadataToken token)
 {
     return(DynamicMethodHelpers.Resolve(scope[token.ToInt32()]));
 }