public override object Convert(object value) { if (value == null) { return(this.defaultValue); } else if (value is T) { return(value); } else if (this.CanConvertFromString && value is string) { string valueAsString = (string)value; if (string.IsNullOrWhiteSpace(valueAsString)) { return(null); } return(this.ConvertFromString((string)value)); } else if (value is HttpRequestMessage <T> ) { HttpRequestMessage <T> valueAsRequest = (HttpRequestMessage <T>)value; return(valueAsRequest.Content.ReadAs()); } else if (value is HttpRequestMessage <T?> ) { HttpRequestMessage <T?> valueAsRequest = (HttpRequestMessage <T?>)value; return(valueAsRequest.Content.ReadAs()); } else if (value is HttpResponseMessage <T> ) { HttpResponseMessage <T> valueAsResponse = (HttpResponseMessage <T>)value; return(valueAsResponse.Content.ReadAs()); } else if (value is HttpResponseMessage <T?> ) { HttpResponseMessage <T?> valueAsResponse = (HttpResponseMessage <T?>)value; return(valueAsResponse.Content.ReadAs()); } else if (value is ObjectContent <T> ) { ObjectContent <T> valueAsContent = (ObjectContent <T>)value; return(valueAsContent.ReadAsOrDefault()); } else if (value is ObjectContent <T?> ) { ObjectContent <T?> valueAsContent = (ObjectContent <T?>)value; return(valueAsContent.ReadAsOrDefault()); } throw Fx.Exception.AsError( new InvalidOperationException( SR.ValueConversionFailed(value.GetType().FullName, this.Type.FullName))); }