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;
}