protected override ParameterDefinitionBase DeepCloneInternal()
        {
            var result = new OutputParameterDefinition <TValue>(
                this.Name?.DeepClone(),
                this.SqlDataType?.DeepClone());

            return(result);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SqlOutputParameterResult{TValue}"/> class.
        /// </summary>
        /// <param name="outputParameter">The name.</param>
        /// <param name="value">The value.</param>
        public SqlOutputParameterResult(
            OutputParameterDefinition <TValue> outputParameter,
            TValue value)
        {
            outputParameter.MustForArg(nameof(outputParameter)).NotBeNull();

            this.OutputParameter = outputParameter;
            this.Value           = value;
        }
        /// <inheritdoc />
        public bool Equals(OutputParameterDefinition <TValue> other)
        {
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            if (ReferenceEquals(other, null))
            {
                return(false);
            }

            var result = this.Name.IsEqualTo(other.Name, StringComparer.Ordinal) &&
                         this.SqlDataType.IsEqualTo(other.SqlDataType);

            return(result);
        }