public bool Equals(Type other) { bool result = CurrentType.Equals(other.CurrentType) && Pointer.Equals(other.Pointer) && Reference.Equals(other.Reference) && Array.Equals(other.Array); // Note: CLS-compliance and element count do not factor // factor into the equality calculations, i.e. // Foo(single[]) == Foo(single[]) -> true // even if these types have different element counts. // This is necessary because otherwise we'd get // redefinition errors in the generated bindings. return(result); }