protected override bool SpecificMatches(RoleCompositionMember member) { if (!(member.Definition is MethodDefinition)) return false; // non-methods are not grouped var controlMethod = Members[0]; return MethodMatcher.IsSignatureMatch( (MethodDefinition)member.ResolveContextualDefinition(), (MethodDefinition)controlMethod.ResolveContextualDefinition()); }
/// <summary> /// Checks if a member matches the condition to be part of this conflict group. /// </summary> /// <remarks> /// The member will always match a group that it's already part of. /// For an empty group, the method <see cref="MatchesEmptyGroup"/> is called. /// The member won't match if it's a hidden member. Hidden members can't conflict with other members. /// The method <see cref="SpecificMatches"/> is called to check this group's condition. /// </remarks> /// <param name="member">Member to check for a match.</param> /// <returns>If the member matches this group's condition.</returns> public bool Matches(RoleCompositionMember member) { if (member == null) throw new ArgumentNullException("member"); if (Members.Count == 0) return MatchesEmptyGroup(member); if (MemberMatcher.IsMatch(Members[0].ResolveContextualDefinition(), member.ResolveContextualDefinition())) return true; if (member.Definition.IsHidden(Module)) return false; return SpecificMatches(member); }
protected override bool SpecificMatches(RoleCompositionMember member) { // TODO: other things that don't match anything: constructors? return MemberMatcher.IsMatch(Members[0].ResolveContextualDefinition(), member.ResolveContextualDefinition()); }