LinuxCommunicator/GenericEqualityComparer.cs (30 lines of code) (raw):

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Microsoft.Hpc.Communicators.LinuxCommunicator { public class GenericEqualityComparer<T> : IEqualityComparer<T> { Func<T, T, bool> compareFunction; Func<T, int> hashFunction; public GenericEqualityComparer(Func<T, T, bool> compareFunction, Func<T, int> hashFunction) { this.compareFunction = compareFunction; this.hashFunction = hashFunction; } public static GenericEqualityComparer<T> CreateComparer(Func<T, T, bool> compareFunction, Func<T, int> hashFunction) { return new GenericEqualityComparer<T>(compareFunction, hashFunction); } public bool Equals(T x, T y) { return compareFunction(x, y); } public int GetHashCode(T obj) { return hashFunction(obj); } } }