AsmResolver.Net.SignatureComparer.MatchTypes C# (CSharp) Method

MatchTypes() public method

Determines whether two types are considered equal according to their signature.
public MatchTypes ( ArrayTypeSignature signature1, ArrayTypeSignature signature2 ) : bool
signature1 AsmResolver.Net.Signatures.ArrayTypeSignature The first type to compare.
signature2 AsmResolver.Net.Signatures.ArrayTypeSignature The second type to compare.
return bool
        public bool MatchTypes(ArrayTypeSignature signature1, ArrayTypeSignature signature2)
        {
            if (signature1 == null && signature2 == null)
                return true;
            if (signature1 == null || signature2 == null)
                return false;

            return MatchTypes(signature1.BaseType, signature2.BaseType)
                && signature1.Dimensions.Count == signature2.Dimensions.Count
                && signature1.Dimensions.Where((d, i) => MatchArrayDimensions(d, signature2.Dimensions[i])).Count() == signature1.Dimensions.Count;
        }

Same methods

SignatureComparer::MatchTypes ( BoxedTypeSignature signature1, BoxedTypeSignature signature2 ) : bool
SignatureComparer::MatchTypes ( ByReferenceTypeSignature signature1, ByReferenceTypeSignature signature2 ) : bool
SignatureComparer::MatchTypes ( FunctionPointerTypeSignature signature1, FunctionPointerTypeSignature signature2 ) : bool
SignatureComparer::MatchTypes ( GenericInstanceTypeSignature signature1, GenericInstanceTypeSignature signature2 ) : bool
SignatureComparer::MatchTypes ( GenericParameterSignature signature1, GenericParameterSignature signature2 ) : bool
SignatureComparer::MatchTypes ( ITypeDefOrRef type1, ITypeDefOrRef type2 ) : bool
SignatureComparer::MatchTypes ( ITypeDefOrRef reference1, ITypeDescriptor descriptor ) : bool
SignatureComparer::MatchTypes ( ITypeDescriptor type1, ITypeDescriptor type2 ) : bool
SignatureComparer::MatchTypes ( MsCorLibTypeSignature signature1, ITypeDescriptor descriptor ) : bool
SignatureComparer::MatchTypes ( OptionalModifierSignature signature1, OptionalModifierSignature signature2 ) : bool
SignatureComparer::MatchTypes ( PinnedTypeSignature signature1, PinnedTypeSignature signature2 ) : bool
SignatureComparer::MatchTypes ( PointerTypeSignature signature1, PointerTypeSignature signature2 ) : bool
SignatureComparer::MatchTypes ( RequiredModifierSignature signature1, RequiredModifierSignature signature2 ) : bool
SignatureComparer::MatchTypes ( SentinelTypeSignature signature1, SentinelTypeSignature signature2 ) : bool
SignatureComparer::MatchTypes ( SzArrayTypeSignature signature1, SzArrayTypeSignature signature2 ) : bool
SignatureComparer::MatchTypes ( TypeDefOrRefSignature signature1, ITypeDescriptor descriptor ) : bool
SignatureComparer::MatchTypes ( TypeSignature signature1, ITypeDescriptor descriptor ) : bool
SignatureComparer::MatchTypes ( TypeSignature signature1, TypeSignature signature2 ) : bool

Usage Example

Exemplo n.º 1
0
        public TypeDefinition ResolveType(ITypeDescriptor type)
        {
            if (type == null)
            {
                throw new ArgumentNullException("type");
            }
            type = type.GetElementType();

            var typeDef = type as TypeDefinition;

            if (typeDef != null)
            {
                return(typeDef);
            }

            var assemblyDescriptor = type.ResolutionScope.GetAssembly();

            if (assemblyDescriptor == null)
            {
                return((TypeDefinition)ThrowOrReturn(type));
            }

            var assembly = AssemblyResolver.ResolveAssembly(assemblyDescriptor);

            if (assembly == null)
            {
                return((TypeDefinition)ThrowOrReturn(type));
            }

            var typeDefTable = assembly.Header.GetStream <TableStream>().GetTable <TypeDefinition>();

            if (typeDefTable == null)
            {
                return((TypeDefinition)ThrowOrReturn(type));
            }

            var definition = typeDefTable.FirstOrDefault(x => _signatureComparer.MatchTypes(x, type));

            return(definition ?? (TypeDefinition)ThrowOrReturn(type));
        }