Inheritance: CallingConventionSignature, IHasTypeSignature
Esempio n. 1
0
        public static new PropertySignature FromReader(MetadataHeader header, IBinaryStreamReader reader)
        {
            var signature = new PropertySignature
            {
                StartOffset = reader.Position,
                Attributes = (CallingConventionAttributes)reader.ReadByte(),
            };

            uint paramCount;
            if (!reader.TryReadCompressedUInt32(out paramCount))
                return null;

            signature.PropertyType = TypeSignature.FromReader(header, reader);

            for (int i = 0; i < paramCount; i++)
                signature.Parameters.Add(ParameterSignature.FromReader(header, reader));

            return signature;
        }
Esempio n. 2
0
        public new static PropertySignature FromReader(MetadataImage image, IBinaryStreamReader reader)
        {
            var signature = new PropertySignature
            {
                Attributes = (CallingConventionAttributes)reader.ReadByte(),
            };

            uint paramCount;

            if (!reader.TryReadCompressedUInt32(out paramCount))
            {
                return(null);
            }

            signature.PropertyType = TypeSignature.FromReader(image, reader);

            for (int i = 0; i < paramCount; i++)
            {
                signature.Parameters.Add(ParameterSignature.FromReader(image, reader));
            }

            return(signature);
        }
Esempio n. 3
0
        /// <summary>
        /// Determines whether two property signatures are considered equal according to their signatures.
        /// </summary>
        /// <param name="signature1">The first signature to compare.</param>
        /// <param name="signature2">The second signature to compare.</param>
        /// <returns><c>True</c> if the signatures are considered equal, <c>False</c> otherwise.</returns>
        public bool MatchPropertySignatures(PropertySignature signature1, PropertySignature signature2)
        {
            if (signature1 == null && signature2 == null)
                return true;
            if (signature1 == null || signature2 == null)
                return false;

            return signature1.Attributes == signature2.Attributes &&
                   MatchTypes(signature1.PropertyType, signature2.PropertyType) &&
                   MatchManyTypes(signature1.Parameters.Select(x => x.ParameterType),
                       signature2.Parameters.Select(x => x.ParameterType));
        }