public override async Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken) { string mediaType; bool flag; HttpRequestMessage request = actionContext.Request; string raw = await HttpRequestMessageExtensions.ToRaw(request); string str = raw; raw = null; HttpHeaderValueCollection <MediaTypeWithQualityHeaderValue> accept = request.Headers.Accept; if (accept != null) { MediaTypeWithQualityHeaderValue mediaTypeWithQualityHeaderValue = accept.SingleOrDefault <MediaTypeWithQualityHeaderValue>(); if (mediaTypeWithQualityHeaderValue != null) { mediaType = mediaTypeWithQualityHeaderValue.MediaType; } else { mediaType = null; } } else { mediaType = null; } string str1 = mediaType; flag = (string.IsNullOrEmpty(str1) ? true : str1 == "*/*"); if (flag) { str1 = "application/json"; } if (str.StartsWith("<")) { str1 = "application/xml"; } Func <string, object> item = this.ContentTypeResolvers[str1]; actionContext.ActionArguments[base.Descriptor.ParameterName] = item(str); }