in src/WebJobs.Script/Binding/ExtensionBinding.cs [74:126]
public override async Task BindAsync(BindingContext context)
{
context.Attributes = Attributes.ToArray();
if (_binding.DefaultType == typeof(IAsyncCollector<byte[]>))
{
await BindAsyncCollectorAsync<byte[]>(context);
}
else if (_binding.DefaultType == typeof(IAsyncCollector<JObject>))
{
await BindAsyncCollectorAsync<JObject>(context);
}
else if (_binding.DefaultType == typeof(IAsyncCollector<string>))
{
await BindAsyncCollectorAsync<string>(context);
}
else if (_binding.DefaultType == typeof(Stream))
{
if (ScriptHost.IsFunctionDataCacheEnabled)
{
if (await TryPrepareAttributesAndBindCacheAwareAsync(context, Access))
{
return;
}
}
await BindStreamAsync(context, Access);
}
else if (_binding.DefaultType == typeof(JObject))
{
await BindJTokenAsync<JObject>(context, Access);
}
else if (_binding.DefaultType == typeof(JArray))
{
await BindJTokenAsync<JArray>(context, Access);
}
else if (_binding.DefaultType == typeof(string))
{
await BindStringAsync(context);
}
else if (_binding.DefaultType == typeof(ParameterBindingData[]))
{
await BindCollectionAsync<ParameterBindingData>(context);
}
else if (_binding.DefaultType == typeof(ParameterBindingData))
{
await BindParameterBindingDataAsync(context);
}
else
{
throw new NotSupportedException($"ScriptBinding type {_binding.DefaultType} is not supported");
}
}