private ConstructorInfoCache(Type type) { Constructors = type.AllConstructors(); _constructors = new Dictionary <Type[], ConstructorInfo>(EqualityComparerEx.Array <Type>()); foreach (var constructorInfo in Constructors) { _constructors[constructorInfo.GetParameters().Select(x => x.ParameterType).ToArray()] = constructorInfo; } }
public void CompareIntsUsingSignComparer() { var array1 = new[] { 1, 2, 3 }; var array2 = new[] { 2, 3, 5 }; var array3 = new[] { 1, 3, -3 }; var array4 = new[] { 1, 2, 3, 4 }; var comparer = EqualityComparerEx.Array(EqualityComparerEx.Func <int>((x, y) => Math.Sign(x) == Math.Sign(y), Math.Sign)); var hashCode1 = comparer.GetHashCode(array1); var hashCode2 = comparer.GetHashCode(array2); var hashCode3 = comparer.GetHashCode(array3); var hashCode4 = comparer.GetHashCode(array4); Assert.Equal(hashCode1, hashCode2); Assert.NotEqual(hashCode1, hashCode3); Assert.NotEqual(hashCode1, hashCode4); Assert.True(comparer.Equals(array1, array1)); Assert.True(comparer.Equals(array1, array2)); Assert.False(comparer.Equals(array1, array3)); Assert.False(comparer.Equals(array1, array4)); }
private static IEqualityComparer <byte[]> GetArrayComparer() { return(EqualityComparerEx.Array <byte>()); }
private static IEqualityComparer <T[]> GetArrayComparer <T>() { return(EqualityComparerEx.Array <T>()); }