예제 #1
0
            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)));
            }