Ejemplo n.º 1
0
        /// <summary>
        /// Returns a hash code for the specified StreamStoreConsolidatedKey object.
        /// </summary>
        /// <returns>
        /// A hash code for the specified StreamStoreConsolidatedKey object.
        /// </returns>
        /// <param name="obj">The <see cref="StreamMetadataKey"/> for which a hash code is to be returned.</param>
        /// <exception cref="System.ArgumentNullException">The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is null.</exception>
        public int GetHashCode(StreamStoreConsolidatedKey obj)
        {
            var kindCode = obj.StoreKind.GetHashCode();
            int keyCode;

            if (obj.StoreKind == StreamStoreKind.MessageStore)
            {
                var messageKeyComparer = new StreamStoreMessageKeyComparer();
                keyCode = messageKeyComparer.GetHashCode(obj.MessageKey);
            }
            else if (obj.StoreKind == StreamStoreKind.MetadataStore)
            {
                var streamMetadataKeyComparer = new StreamMetadataKeyComparer();
                keyCode = streamMetadataKeyComparer.GetHashCode(obj.MetadataKey);
            }
            else
            {
                var streamNameKeyComparer = new StreamNameKeyComparer();
                keyCode = streamNameKeyComparer.GetHashCode(obj.NameKey);
            }

            return(kindCode ^ keyCode);
        }