ICSharpCode.NRefactory.CSharp.Resolver.FindReferences.IsMemberMatch C# (CSharp) Méthode

IsMemberMatch() private méthode

private IsMemberMatch ( IMember member, IMember referencedMember, bool isVirtualCall ) : bool
member IMember
referencedMember IMember
isVirtualCall bool
Résultat bool
		bool IsMemberMatch(IMember member, IMember referencedMember, bool isVirtualCall)
		{
			referencedMember = NormalizeMember(referencedMember);
			if (member.Equals(referencedMember))
				return true;
			if (FindCallsThroughInterface && member.DeclaringTypeDefinition != null && member.DeclaringTypeDefinition.Kind == TypeKind.Interface) {
				if (FindOnlySpecializedReferences) {
					return referencedMember.ImplementedInterfaceMembers.Contains(member);
				} else {
					return referencedMember.ImplementedInterfaceMembers.Any(m => m.MemberDefinition.Equals(member));
				}
			}
			if (!isVirtualCall)
				return false;
			bool isInterfaceCall = referencedMember.DeclaringTypeDefinition != null && referencedMember.DeclaringTypeDefinition.Kind == TypeKind.Interface;
			if (FindCallsThroughVirtualBaseMethod && member.IsOverride && !WholeVirtualSlot && !isInterfaceCall) {
				// Test if 'member' overrides 'referencedMember':
				foreach (var baseMember in InheritanceHelper.GetBaseMembers(member, false)) {
					if (FindOnlySpecializedReferences) {
						if (baseMember.Equals(referencedMember))
							return true;
					} else {
						if (baseMember.MemberDefinition.Equals(referencedMember))
							return true;
					}
					if (!baseMember.IsOverride)
						break;
				}
				return false;
			} else if (FindCallsThroughInterface && isInterfaceCall) {
				// Test if 'member' implements 'referencedMember':
				if (FindOnlySpecializedReferences) {
					return member.ImplementedInterfaceMembers.Contains(referencedMember);
				} else {
					return member.ImplementedInterfaceMembers.Any(m => m.MemberDefinition.Equals(referencedMember));
				}
			}
			return false;
		}