private static object ConvertValueIfNecessary()

in src/WebJobs.Extensions.Http/HttpTriggerAttributeBindingProvider.cs [434:460]


            private static object ConvertValueIfNecessary(object value, Type targetType)
            {
                if (value != null && !targetType.IsAssignableFrom(value.GetType()))
                {
                    var underlyingTargetType = Nullable.GetUnderlyingType(targetType) ?? targetType;

                    var jObject = value as JObject;
                    if (jObject != null)
                    {
                        value = jObject.ToObject(targetType);
                    }
                    else if (underlyingTargetType == typeof(Guid) && value.GetType() == typeof(string))
                    {
                        // Guids need to be converted by their own logic
                        // Intentionally throw here on error to standardize behavior
                        value = Guid.Parse((string)value);
                    }
                    else
                    {
                        // if the type is nullable, we only need to convert to the
                        // correct underlying type
                        value = Convert.ChangeType(value, underlyingTargetType);
                    }
                }

                return value;
            }