in src/WebJobs.Extensions/Framework/Bindings/StreamValueBinder.cs [124:168]
public override async Task SetValueAsync(object value, CancellationToken cancellationToken)
{
if (value == null)
{
return;
}
if (typeof(Stream).IsAssignableFrom(value.GetType()))
{
Stream stream = (Stream)value;
stream.Close();
}
else if (typeof(TextWriter).IsAssignableFrom(value.GetType()))
{
TextWriter writer = (TextWriter)value;
writer.Close();
}
else if (typeof(TextReader).IsAssignableFrom(value.GetType()))
{
TextReader reader = (TextReader)value;
reader.Close();
}
else
{
if (_parameter.IsOut)
{
// convert the value as needed into a byte[]
byte[] bytes = null;
if (value.GetType() == typeof(string))
{
bytes = Encoding.UTF8.GetBytes((string)value);
}
else if (value.GetType() == typeof(byte[]))
{
bytes = (byte[])value;
}
// open the file using the declared file options, and write the bytes
using (Stream stream = GetStream())
{
await stream.WriteAsync(bytes, 0, bytes.Length);
}
}
}
}