コード例 #1
0
        //Methods
        public bool Equals(IDictionary <TKey, TValue> left, IDictionary <TKey, TValue> right)
        {
            //Same reference
            if (left == right)
            {
                return(true);
            }
            //Null
            else if (left is null || right is null)
            {
                return(false);
            }

            //Keys don't match
            var keysComparer = new EnumerableEqualityComparer <TKey>(_keyComparer);

            if (!keysComparer.Equals(left.Keys, right.Keys))
            {
                return(false);
            }

            //Values don't match
            foreach (var(key, value) in left)
            {
                var rightValue = right[key];
                if (!_valueComparer.Equals(value, rightValue))
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        public int GetHashCode(TEntity entity)
        {
            if (entity is null)
            {
                return(default(TEntity).GetHashCode());
            }

            var primitiveValues    = GetPrimitiveProperties(entity).Select(p => p.Value);
            var enumerableComparer = new EnumerableEqualityComparer <object>();

            return(enumerableComparer.GetHashCode(primitiveValues));
        }