Exemple #1
0
        public MediaTypeFormatter SelectWriteFormatter(Type type, FormatterContext formatterContext, IEnumerable <MediaTypeFormatter> formatters, out MediaTypeHeaderValue mediaType)
        {
            string descriptFormatterContext = GetDescriptFormatterContext(formatterContext);

            Console.WriteLine("Selecting Write Formatter for type {0} based on formatter context: {1}", type.Name, descriptFormatterContext);
            var mediaTypeFormatter = _FormatterSelector.SelectWriteFormatter(type, formatterContext, formatters, out mediaType);

            Console.WriteLine("Selected Write Formatter : {0} {1}", mediaTypeFormatter.GetType().Name, mediaType);
            return(mediaTypeFormatter);
        }
Exemple #2
0
        public static Tuple <MediaTypeFormatter, MediaTypeHeaderValue> Negotiate <T>(
            this MediaTypeFormatterCollection formatters,
            HttpRequestMessage requestMessage)
        {
            var formatSelector             = new FormatterSelector();
            MediaTypeHeaderValue mediaType = null;
            var response = new HttpResponseMessage()
            {
                RequestMessage = requestMessage
            };

            var formatter = formatSelector.SelectWriteFormatter(
                typeof(T),
                new FormatterContext(response, false),
                formatters,
                out mediaType);

            return
                (new Tuple <MediaTypeFormatter, MediaTypeHeaderValue>(
                     formatter, mediaType
                     ));

            /*
             * Usage:
             * public HttpResponseMessage Get() {
             *
             *  var response = new HttpResponseMessage();
             *
             *  var contact = new Contact() {FirstName = "Joe", LastName = "Brown"};
             *
             *  var mediaInfo = Configuration.Formatters.Negotiate<Contact>(Request);
             *
             *  response.Content = new SimpleObjectContent<Contact>(contact, mediaInfo.Item1);
             *  response.Content.Headers.ContentType = mediaInfo.Item2;
             *
             *  return response;
             * }
             */
        }