ActualMediaTypeFormatter() public static method

public static ActualMediaTypeFormatter ( System.Net.Http.Formatting.MediaTypeFormatter formatter ) : System.Net.Http.Formatting.MediaTypeFormatter
formatter System.Net.Http.Formatting.MediaTypeFormatter
return System.Net.Http.Formatting.MediaTypeFormatter
コード例 #1
0
        public override MediaTypeFormatter GetPerRequestFormatterInstance(
            Type type,
            HttpRequestMessage request,
            MediaTypeHeaderValue mediaType
            )
        {
            MediaTypeFormatter formatter = null;

            TraceWriter.TraceBeginEnd(
                request,
                TraceCategories.FormattingCategory,
                TraceLevel.Info,
                InnerFormatter.GetType().Name,
                GetPerRequestFormatterInstanceMethodName,
                beginTrace: (tr) =>
            {
                tr.Message = Error.Format(
                    SRResources.TraceGetPerRequestFormatterMessage,
                    InnerFormatter.GetType().Name,
                    type.Name,
                    mediaType
                    );
            },
                execute: () =>
            {
                formatter = InnerFormatter.GetPerRequestFormatterInstance(
                    type,
                    request,
                    mediaType
                    );
            },
                endTrace: (tr) =>
            {
                if (formatter == null)
                {
                    tr.Message = SRResources.TraceGetPerRequestNullFormatterEndMessage;
                }
                else
                {
                    string formatMessage = Object.ReferenceEquals(
                        MediaTypeFormatterTracer.ActualMediaTypeFormatter(formatter),
                        InnerFormatter
                        )
                          ? SRResources.TraceGetPerRequestFormatterEndMessage
                          : SRResources.TraceGetPerRequestFormatterEndMessageNew;

                    tr.Message = Error.Format(formatMessage, formatter.GetType().Name);
                }
            },
                errorTrace: null
                );

            if (formatter != null && !(formatter is IFormatterTracer))
            {
                formatter = MediaTypeFormatterTracer.CreateTracer(formatter, TraceWriter, request);
            }

            return(formatter);
        }
コード例 #2
0
        public ContentNegotiationResult Negotiate(
            Type type,
            HttpRequestMessage request,
            IEnumerable <MediaTypeFormatter> formatters
            )
        {
            ContentNegotiationResult result = null;

            _traceWriter.TraceBeginEnd(
                request,
                TraceCategories.FormattingCategory,
                TraceLevel.Info,
                _innerNegotiator.GetType().Name,
                NegotiateMethodName,
                beginTrace: (tr) =>
            {
                tr.Message = Error.Format(
                    SRResources.TraceNegotiateFormatter,
                    type.Name,
                    FormattingUtilities.FormattersToString(formatters)
                    );
            },
                execute: () =>
            {
                result = _innerNegotiator.Negotiate(type, request, formatters);
            },
                endTrace: (tr) =>
            {
                tr.Message = Error.Format(
                    SRResources.TraceSelectedFormatter,
                    result == null
                          ? SRResources.TraceNoneObjectMessage
                          : MediaTypeFormatterTracer
                    .ActualMediaTypeFormatter(result.Formatter)
                    .GetType().Name,
                    result == null || result.MediaType == null
                          ? SRResources.TraceNoneObjectMessage
                          : result.MediaType.ToString()
                    );
            },
                errorTrace: null
                );

            if (result != null)
            {
                result.Formatter = MediaTypeFormatterTracer.CreateTracer(
                    result.Formatter,
                    _traceWriter,
                    request
                    );
            }

            return(result);
        }