Table of Contents

Class SignatureComparer

Namespace
AsmResolver.DotNet.Signatures
Assembly
AsmResolver.DotNet.dll

Provides a mechanism for comparing signatures of members defined in a .NET assembly by their contents.

public class SignatureComparer : IEqualityComparer<CallingConventionSignature>, IEqualityComparer<FieldSignature>, IEqualityComparer<MethodSignature>, IEqualityComparer<PropertySignature>, IEqualityComparer<LocalVariablesSignature>, IEqualityComparer<GenericInstanceMethodSignature>, IEqualityComparer<byte[]>, IEqualityComparer<MemberReference>, IEqualityComparer<IMethodDescriptor>, IEqualityComparer<IFieldDescriptor>, IEqualityComparer<MethodSpecification>, IEqualityComparer<IResolutionScope>, IEqualityComparer<AssemblyDescriptor>, IEqualityComparer<AssemblyReference>, IEqualityComparer<ITypeDescriptor>, IEqualityComparer<ITypeDefOrRef>, IEqualityComparer<TypeDefinition>, IEqualityComparer<TypeReference>, IEqualityComparer<TypeSpecification>, IEqualityComparer<ExportedType>, IEqualityComparer<InvalidTypeDefOrRef>, IEqualityComparer<TypeSignature>, IEqualityComparer<CorLibTypeSignature>, IEqualityComparer<ByReferenceTypeSignature>, IEqualityComparer<PointerTypeSignature>, IEqualityComparer<SzArrayTypeSignature>, IEqualityComparer<PinnedTypeSignature>, IEqualityComparer<BoxedTypeSignature>, IEqualityComparer<TypeDefOrRefSignature>, IEqualityComparer<CustomModifierTypeSignature>, IEqualityComparer<GenericInstanceTypeSignature>, IEqualityComparer<GenericParameterSignature>, IEqualityComparer<ArrayTypeSignature>, IEqualityComparer<SentinelTypeSignature>, IEqualityComparer<FunctionPointerTypeSignature>, IEqualityComparer<IList<TypeSignature>>, IEqualityComparer<IEnumerable<TypeSignature>>
Inheritance
SignatureComparer
Implements
Inherited Members

Constructors

SignatureComparer()

The default SignatureComparer constructor.

public SignatureComparer()

SignatureComparer(RuntimeContext?)

A SignatureComparer constructor with a parameter for specifying the Flags used in comparisons.

public SignatureComparer(RuntimeContext? context)

Parameters

context RuntimeContext

The runtime context that is assumed when comparing types.

SignatureComparer(RuntimeContext?, SignatureComparisonFlags)

A SignatureComparer constructor with a parameter for specifying the Flags used in comparisons.

public SignatureComparer(RuntimeContext? context, SignatureComparisonFlags flags)

Parameters

context RuntimeContext

The runtime context that is assumed when comparing types.

flags SignatureComparisonFlags

The Flags used in comparisons.

SignatureComparer(SignatureComparisonFlags)

A SignatureComparer constructor with a parameter for specifying the Flags used in comparisons.

public SignatureComparer(SignatureComparisonFlags flags)

Parameters

flags SignatureComparisonFlags

The Flags used in comparisons.

Properties

Default

An immutable default instance of SignatureComparer.

public static SignatureComparer Default { get; }

Property Value

SignatureComparer

Flags

Flags for controlling comparison behavior.

public SignatureComparisonFlags Flags { get; }

Property Value

SignatureComparisonFlags

RuntimeContext

When available, gets the runtime context that is assumed when comparing types.

public RuntimeContext? RuntimeContext { get; }

Property Value

RuntimeContext

Remarks

When null, types are always compared as-is. When non-null, any exported type is resolved first before doing the comparison.

Methods

Equals(AssemblyDescriptor?, AssemblyDescriptor?)

public virtual bool Equals(AssemblyDescriptor? x, AssemblyDescriptor? y)

Parameters

x AssemblyDescriptor
y AssemblyDescriptor

Returns

bool

Equals(AssemblyReference?, AssemblyReference?)

public virtual bool Equals(AssemblyReference? x, AssemblyReference? y)

Parameters

x AssemblyReference
y AssemblyReference

Returns

bool

Equals(ExportedType?, ExportedType?)

public virtual bool Equals(ExportedType? x, ExportedType? y)

Parameters

x ExportedType
y ExportedType

Returns

bool

Equals(IFieldDescriptor?, IFieldDescriptor?)

public virtual bool Equals(IFieldDescriptor? x, IFieldDescriptor? y)

Parameters

x IFieldDescriptor
y IFieldDescriptor

Returns

bool

Equals(IMethodDescriptor?, IMethodDescriptor?)

public virtual bool Equals(IMethodDescriptor? x, IMethodDescriptor? y)

Parameters

x IMethodDescriptor
y IMethodDescriptor

Returns

bool

Equals(IResolutionScope?, IResolutionScope?)

public virtual bool Equals(IResolutionScope? x, IResolutionScope? y)

Parameters

x IResolutionScope
y IResolutionScope

Returns

bool

Equals(ITypeDefOrRef?, ITypeDefOrRef?)

public virtual bool Equals(ITypeDefOrRef? x, ITypeDefOrRef? y)

Parameters

x ITypeDefOrRef
y ITypeDefOrRef

Returns

bool

Equals(ITypeDescriptor?, ITypeDescriptor?)

public virtual bool Equals(ITypeDescriptor? x, ITypeDescriptor? y)

Parameters

x ITypeDescriptor
y ITypeDescriptor

Returns

bool

Equals(InvalidTypeDefOrRef?, InvalidTypeDefOrRef?)

public virtual bool Equals(InvalidTypeDefOrRef? x, InvalidTypeDefOrRef? y)

Parameters

x InvalidTypeDefOrRef
y InvalidTypeDefOrRef

Returns

bool

Equals(MemberReference?, MemberReference?)

public virtual bool Equals(MemberReference? x, MemberReference? y)

Parameters

x MemberReference
y MemberReference

Returns

bool

Equals(MethodSpecification?, MethodSpecification?)

public virtual bool Equals(MethodSpecification? x, MethodSpecification? y)

Parameters

x MethodSpecification
y MethodSpecification

Returns

bool

Equals(ArrayTypeSignature?, ArrayTypeSignature?)

public virtual bool Equals(ArrayTypeSignature? x, ArrayTypeSignature? y)

Parameters

x ArrayTypeSignature
y ArrayTypeSignature

Returns

bool

Equals(BoxedTypeSignature?, BoxedTypeSignature?)

public virtual bool Equals(BoxedTypeSignature? x, BoxedTypeSignature? y)

Parameters

x BoxedTypeSignature
y BoxedTypeSignature

Returns

bool

Equals(ByReferenceTypeSignature?, ByReferenceTypeSignature?)

public virtual bool Equals(ByReferenceTypeSignature? x, ByReferenceTypeSignature? y)

Parameters

x ByReferenceTypeSignature
y ByReferenceTypeSignature

Returns

bool

Equals(CallingConventionSignature?, CallingConventionSignature?)

public virtual bool Equals(CallingConventionSignature? x, CallingConventionSignature? y)

Parameters

x CallingConventionSignature
y CallingConventionSignature

Returns

bool

Equals(CorLibTypeSignature?, CorLibTypeSignature?)

public virtual bool Equals(CorLibTypeSignature? x, CorLibTypeSignature? y)

Parameters

x CorLibTypeSignature
y CorLibTypeSignature

Returns

bool

Equals(CustomModifierTypeSignature?, CustomModifierTypeSignature?)

public virtual bool Equals(CustomModifierTypeSignature? x, CustomModifierTypeSignature? y)

Parameters

x CustomModifierTypeSignature
y CustomModifierTypeSignature

Returns

bool

Equals(FieldSignature?, FieldSignature?)

public virtual bool Equals(FieldSignature? x, FieldSignature? y)

Parameters

x FieldSignature
y FieldSignature

Returns

bool

Equals(FunctionPointerTypeSignature?, FunctionPointerTypeSignature?)

public virtual bool Equals(FunctionPointerTypeSignature? x, FunctionPointerTypeSignature? y)

Parameters

x FunctionPointerTypeSignature
y FunctionPointerTypeSignature

Returns

bool

Equals(GenericInstanceMethodSignature?, GenericInstanceMethodSignature?)

public virtual bool Equals(GenericInstanceMethodSignature? x, GenericInstanceMethodSignature? y)

Parameters

x GenericInstanceMethodSignature
y GenericInstanceMethodSignature

Returns

bool

Equals(GenericInstanceTypeSignature?, GenericInstanceTypeSignature?)

public virtual bool Equals(GenericInstanceTypeSignature? x, GenericInstanceTypeSignature? y)

Parameters

x GenericInstanceTypeSignature
y GenericInstanceTypeSignature

Returns

bool

Equals(GenericParameterSignature?, GenericParameterSignature?)

public virtual bool Equals(GenericParameterSignature? x, GenericParameterSignature? y)

Parameters

x GenericParameterSignature
y GenericParameterSignature

Returns

bool

Equals(LocalVariablesSignature?, LocalVariablesSignature?)

public virtual bool Equals(LocalVariablesSignature? x, LocalVariablesSignature? y)

Parameters

x LocalVariablesSignature
y LocalVariablesSignature

Returns

bool

Equals(MethodSignature?, MethodSignature?)

public virtual bool Equals(MethodSignature? x, MethodSignature? y)

Parameters

x MethodSignature
y MethodSignature

Returns

bool

Equals(PinnedTypeSignature?, PinnedTypeSignature?)

public virtual bool Equals(PinnedTypeSignature? x, PinnedTypeSignature? y)

Parameters

x PinnedTypeSignature
y PinnedTypeSignature

Returns

bool

Equals(PointerTypeSignature?, PointerTypeSignature?)

public virtual bool Equals(PointerTypeSignature? x, PointerTypeSignature? y)

Parameters

x PointerTypeSignature
y PointerTypeSignature

Returns

bool

Equals(PropertySignature?, PropertySignature?)

public virtual bool Equals(PropertySignature? x, PropertySignature? y)

Parameters

x PropertySignature
y PropertySignature

Returns

bool

Equals(SentinelTypeSignature?, SentinelTypeSignature?)

public virtual bool Equals(SentinelTypeSignature? x, SentinelTypeSignature? y)

Parameters

x SentinelTypeSignature
y SentinelTypeSignature

Returns

bool

Equals(SzArrayTypeSignature?, SzArrayTypeSignature?)

public virtual bool Equals(SzArrayTypeSignature? x, SzArrayTypeSignature? y)

Parameters

x SzArrayTypeSignature
y SzArrayTypeSignature

Returns

bool

Equals(TypeDefOrRefSignature?, TypeDefOrRefSignature?)

public virtual bool Equals(TypeDefOrRefSignature? x, TypeDefOrRefSignature? y)

Parameters

x TypeDefOrRefSignature
y TypeDefOrRefSignature

Returns

bool

Equals(TypeSignature?, TypeSignature?)

public virtual bool Equals(TypeSignature? x, TypeSignature? y)

Parameters

x TypeSignature
y TypeSignature

Returns

bool

Equals(TypeDefinition?, TypeDefinition?)

public virtual bool Equals(TypeDefinition? x, TypeDefinition? y)

Parameters

x TypeDefinition
y TypeDefinition

Returns

bool

Equals(TypeReference?, TypeReference?)

public virtual bool Equals(TypeReference? x, TypeReference? y)

Parameters

x TypeReference
y TypeReference

Returns

bool

Equals(TypeSpecification?, TypeSpecification?)

public virtual bool Equals(TypeSpecification? x, TypeSpecification? y)

Parameters

x TypeSpecification
y TypeSpecification

Returns

bool

Equals(byte[]?, byte[]?)

public virtual bool Equals(byte[]? x, byte[]? y)

Parameters

x byte[]
y byte[]

Returns

bool

Equals(IEnumerable<TypeSignature>?, IEnumerable<TypeSignature>?)

public virtual bool Equals(IEnumerable<TypeSignature>? x, IEnumerable<TypeSignature>? y)

Parameters

x IEnumerable<TypeSignature>
y IEnumerable<TypeSignature>

Returns

bool

Equals(IList<TypeSignature>?, IList<TypeSignature>?)

public virtual bool Equals(IList<TypeSignature>? x, IList<TypeSignature>? y)

Parameters

x IList<TypeSignature>
y IList<TypeSignature>

Returns

bool

GetHashCode(AssemblyDescriptor)

public virtual int GetHashCode(AssemblyDescriptor obj)

Parameters

obj AssemblyDescriptor

Returns

int

GetHashCode(AssemblyReference)

public virtual int GetHashCode(AssemblyReference obj)

Parameters

obj AssemblyReference

Returns

int

GetHashCode(ExportedType)

public virtual int GetHashCode(ExportedType obj)

Parameters

obj ExportedType

Returns

int

GetHashCode(IFieldDescriptor)

public virtual int GetHashCode(IFieldDescriptor obj)

Parameters

obj IFieldDescriptor

Returns

int

GetHashCode(IMethodDescriptor)

public virtual int GetHashCode(IMethodDescriptor obj)

Parameters

obj IMethodDescriptor

Returns

int

GetHashCode(IResolutionScope)

public virtual int GetHashCode(IResolutionScope obj)

Parameters

obj IResolutionScope

Returns

int

GetHashCode(ITypeDefOrRef)

public virtual int GetHashCode(ITypeDefOrRef obj)

Parameters

obj ITypeDefOrRef

Returns

int

GetHashCode(ITypeDescriptor)

public virtual int GetHashCode(ITypeDescriptor obj)

Parameters

obj ITypeDescriptor

Returns

int

GetHashCode(InvalidTypeDefOrRef)

public virtual int GetHashCode(InvalidTypeDefOrRef obj)

Parameters

obj InvalidTypeDefOrRef

Returns

int

GetHashCode(MemberReference)

public virtual int GetHashCode(MemberReference obj)

Parameters

obj MemberReference

Returns

int

GetHashCode(MethodSpecification)

public virtual int GetHashCode(MethodSpecification obj)

Parameters

obj MethodSpecification

Returns

int

GetHashCode(ArrayTypeSignature)

public virtual int GetHashCode(ArrayTypeSignature obj)

Parameters

obj ArrayTypeSignature

Returns

int

GetHashCode(BoxedTypeSignature)

public virtual int GetHashCode(BoxedTypeSignature obj)

Parameters

obj BoxedTypeSignature

Returns

int

GetHashCode(ByReferenceTypeSignature)

public virtual int GetHashCode(ByReferenceTypeSignature obj)

Parameters

obj ByReferenceTypeSignature

Returns

int

GetHashCode(CallingConventionSignature)

public virtual int GetHashCode(CallingConventionSignature obj)

Parameters

obj CallingConventionSignature

Returns

int

GetHashCode(CorLibTypeSignature)

public virtual int GetHashCode(CorLibTypeSignature obj)

Parameters

obj CorLibTypeSignature

Returns

int

GetHashCode(CustomModifierTypeSignature)

public virtual int GetHashCode(CustomModifierTypeSignature obj)

Parameters

obj CustomModifierTypeSignature

Returns

int

GetHashCode(FieldSignature)

public virtual int GetHashCode(FieldSignature obj)

Parameters

obj FieldSignature

Returns

int

GetHashCode(FunctionPointerTypeSignature)

public virtual int GetHashCode(FunctionPointerTypeSignature obj)

Parameters

obj FunctionPointerTypeSignature

Returns

int

GetHashCode(GenericInstanceMethodSignature)

public virtual int GetHashCode(GenericInstanceMethodSignature obj)

Parameters

obj GenericInstanceMethodSignature

Returns

int

GetHashCode(GenericInstanceTypeSignature)

public virtual int GetHashCode(GenericInstanceTypeSignature obj)

Parameters

obj GenericInstanceTypeSignature

Returns

int

GetHashCode(GenericParameterSignature)

public virtual int GetHashCode(GenericParameterSignature obj)

Parameters

obj GenericParameterSignature

Returns

int

GetHashCode(LocalVariablesSignature)

public virtual int GetHashCode(LocalVariablesSignature obj)

Parameters

obj LocalVariablesSignature

Returns

int

GetHashCode(MethodSignature)

public virtual int GetHashCode(MethodSignature obj)

Parameters

obj MethodSignature

Returns

int

GetHashCode(PinnedTypeSignature)

public virtual int GetHashCode(PinnedTypeSignature obj)

Parameters

obj PinnedTypeSignature

Returns

int

GetHashCode(PointerTypeSignature)

public virtual int GetHashCode(PointerTypeSignature obj)

Parameters

obj PointerTypeSignature

Returns

int

GetHashCode(PropertySignature)

public virtual int GetHashCode(PropertySignature obj)

Parameters

obj PropertySignature

Returns

int

GetHashCode(SentinelTypeSignature)

public virtual int GetHashCode(SentinelTypeSignature obj)

Parameters

obj SentinelTypeSignature

Returns

int

GetHashCode(SzArrayTypeSignature)

public virtual int GetHashCode(SzArrayTypeSignature obj)

Parameters

obj SzArrayTypeSignature

Returns

int

GetHashCode(TypeDefOrRefSignature)

public virtual int GetHashCode(TypeDefOrRefSignature obj)

Parameters

obj TypeDefOrRefSignature

Returns

int

GetHashCode(TypeSignature)

public virtual int GetHashCode(TypeSignature obj)

Parameters

obj TypeSignature

Returns

int

GetHashCode(TypeDefinition)

public virtual int GetHashCode(TypeDefinition obj)

Parameters

obj TypeDefinition

Returns

int

GetHashCode(TypeReference)

public virtual int GetHashCode(TypeReference obj)

Parameters

obj TypeReference

Returns

int

GetHashCode(TypeSpecification)

public virtual int GetHashCode(TypeSpecification obj)

Parameters

obj TypeSpecification

Returns

int

GetHashCode(byte[])

public virtual int GetHashCode(byte[] obj)

Parameters

obj byte[]

Returns

int

GetHashCode(IEnumerable<TypeSignature>)

public virtual int GetHashCode(IEnumerable<TypeSignature> obj)

Parameters

obj IEnumerable<TypeSignature>

Returns

int

GetHashCode(IList<TypeSignature>)

public virtual int GetHashCode(IList<TypeSignature> obj)

Parameters

obj IList<TypeSignature>

Returns

int

SimpleTypeEquals(ITypeDescriptor, ITypeDescriptor)

Compares two ITypeDescriptors without specializing for unusual kinds of descriptors.

protected virtual bool SimpleTypeEquals(ITypeDescriptor x, ITypeDescriptor y)

Parameters

x ITypeDescriptor

The first ITypeDescriptor to compare

y ITypeDescriptor

The second ITypeDescriptor to compare

Returns

bool

true if x and y are equal; false otherwise

Remarks

This is called by Equals(ITypeDefOrRef?, ITypeDefOrRef?) for non-TypeSignatures. Overrides of this method should, as much as possible, compare x and y directly.

SimpleTypeHashCode(ITypeDescriptor)

Gets the hashcode of a ITypeDescriptor without specializing for unusual kinds of descriptors.

protected virtual int SimpleTypeHashCode(ITypeDescriptor obj)

Parameters

obj ITypeDescriptor

The ITypeDescriptor to get the hashcode of

Returns

int

The computed hashcode

Remarks

This is called by GetHashCode(ITypeDefOrRef) for non-TypeSignatures. Overrides of this method should, as much as possible, compare obj directly.