public override async Task SetValueAsync()

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