using System.Collections.Generic; using System.Linq; namespace HavenSoft.AutoImplement.Delegation; /// /// Provides a simple comparison implementation for enumerable things. /// Used for creating dictionaries of implementations for generic methods (for stubs). /// public class EnumerableEqualityComparer : IEqualityComparer> { /// public bool Equals(IEnumerable a, IEnumerable b) => a.SequenceEqual(b); /// public int GetHashCode(IEnumerable elements) { uint code = 0; foreach (var element in elements) { code = ((code <<13) | (code >> 19)); // cyclic bit shift by a prime number code ^= (uint)element.GetHashCode(); } return (int)code; } }