AsmResolver.Net.SignatureComparer.MatchMembers C# (CSharp) Метод

MatchMembers() публичный Метод

Determines whether two callable member references are considered equal according to their signatures.
public MatchMembers ( IMemberReference reference1, IMemberReference reference2 ) : bool
reference1 IMemberReference The first reference to compare.
reference2 IMemberReference The second reference to compare.
Результат bool
        public bool MatchMembers(IMemberReference reference1, IMemberReference reference2)
        {
            if (reference1 == null && reference2 == null)
                return true;
            if (reference1 == null || reference2 == null)
                return false;

            var callable = reference1 as ICallableMemberReference;
            if (callable != null)
                return MatchMembers(callable, reference2 as ICallableMemberReference);

            var type = reference1 as ITypeDefOrRef;
            if (type != null)
                return MatchMembers(type, reference1 as ITypeDefOrRef);

            return false;
        }

Same methods

SignatureComparer::MatchMembers ( FieldDefinition field, MemberReference reference ) : bool
SignatureComparer::MatchMembers ( ICallableMemberReference reference1, ICallableMemberReference reference2 ) : bool
SignatureComparer::MatchMembers ( MemberReference reference1, MemberReference reference2 ) : bool
SignatureComparer::MatchMembers ( MethodDefinition method, MemberReference reference ) : bool

Usage Example

Пример #1
0
        public MethodDefinition ResolveMethod(MemberReference reference)
        {
            if (reference == null)
            {
                throw new ArgumentNullException("reference");
            }

            var typeDef = ResolveType(reference.Parent as ITypeDefOrRef);

            if (typeDef == null)
            {
                return((MethodDefinition)ThrowOrReturn(reference));
            }

            var method = typeDef.Methods.FirstOrDefault(x => _signatureComparer.MatchMembers(x, reference));

            return(method ?? (MethodDefinition)ThrowOrReturn(reference));
        }