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; }
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); }
/// <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)); }