Beispiel #1
0
        /// <summary>
        /// Visits the children of the given payload element and replaces it with a copy if any child changes
        /// </summary>
        /// <param name="payloadElement">The payload element to potentially replace</param>
        /// <returns>The original element or a copy to replace it with</returns>
        public virtual ODataPayloadElement Visit(ODataErrorPayload payloadElement)
        {
            ExceptionUtilities.CheckArgumentNotNull(payloadElement, "payloadElement");

            var innerError = payloadElement.InnerError;

            if (innerError != null)
            {
                // Note: we specifically allow it to be replaced with null
                innerError = this.Recurse(innerError) as ODataInternalExceptionPayload;
            }

            if (this.ShouldReplace(payloadElement.InnerError, innerError))
            {
                return(payloadElement.ReplaceWith(
                           new ODataErrorPayload()
                {
                    Message = payloadElement.Message,
                    Code = payloadElement.Code,
                    InnerError = innerError,
                }));
            }

            return(payloadElement);
        }