It's not that easy. WinSCP .NET assembly is a wrapper around WinSCP scripting.
It's not really intended for uses like yours.
Thoughts on creating a Put method that accepts a byte array instead of a file path?
public TransferOperationResult Put(byte data, string remoteFileName, string remotePath, TransferOptions options = null)
The data I am working with is an in-memory byte array and my environment does not have good place to store temporary files. So keeping everything in memory would be ideal.