Um CryptoStream pode ser retornado e ainda ter tudo descartado corretamente?

Se eu tiver umCryptoStream que eu quero passar de volta para o usuário, a abordagem ingênua seria

public Stream GetDecryptedFileStream(string inputFile, byte[] key, byte[] iv)
{
    var fsCrypt = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.Read);
    var rmCrypto = new RijndaelManaged();
    var transform = rmCrypto.CreateDecryptor(key, iv);
    var cs = new CryptoStream(fsCrypt, transform, CryptoStreamMode.Read);

    return cs;
}

Eu sei que quando descartar oCryptoStream o subjacenteFileStream também será descartado. O problema que estou enfrentando é o que devo fazer comrmCrypto etransform? RijndaelManaged eICryptoTransform são classes descartáveis, mas o descarte do fluxo não descarta esses dois objetos.

Qual é a maneira correta de lidar com essa situação?

questionAnswers(2)

yourAnswerToTheQuestion