Exemple #1
0
        public MethodRefSignature(byte[] signiture) : base(Signatures.MethodRef)
        {
            Offset offset = 0;

            var calling = new CallingConventionSignatureToken(signiture, offset);

            Tokens.Add(calling);
            if ((calling.Convention & CallingConventions.Generic) != 0)
            {
                var genParamCount = new GenericParamaterCountSignatureToken(signiture, offset);
                Tokens.Add(genParamCount);
            }

            var paramCount = new ParameterCountSignatureToken(signiture, offset);

            Tokens.Add(paramCount);

            var returnType = new ReturnTypeSignatureToken(signiture, offset);

            Tokens.Add(returnType);

            for (int i = 0; i < paramCount.Count; i++)
            {
                if (SentinalSignatureToken.IsToken(signiture, offset))
                {
                    i--;    // This is not a parameter
                    Tokens.Add(new SentinalSignatureToken(signiture, offset));
                }
                else
                {
                    var param = new ParamSignatureToken(signiture, offset);
                    Tokens.Add(param);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Returns the token that describes the return type defined in the signiture.
        /// </summary>
        /// <returns>The Token or null if no return type defined.</returns>
        public ReturnTypeSignatureToken GetReturnTypeToken()
        {
            ReturnTypeSignatureToken token = null;

            for (int i = 0; i < _tokens.Count; i++)
            {
                if (_tokens[i] is ReturnTypeSignatureToken)
                {
                    token = _tokens[i] as ReturnTypeSignatureToken;
                    break;
                }
            }
            return(token);
        }