В следующем фрагменте кода я получаю следующее предупреждение, но не могу понять, почему предупреждение
CA2202: Microsoft.Usage: объект 'memStream' может быть удален несколько раз в методе 'Encrypt(строка).Во избежание генерации исключения System.ObjectDisposedException не следует вызывать метод Dispose для объекта более одного раза.
Код:
string Encrypt(string toEncrypt)
{
byte[] key = ...
byte[] iv = ...
using (AesCng aes = new AesCng())
using (ICryptoTransform encryptor = aes.CreateEncryptor(key, iv))
using (MemoryStream memStream = new MemoryStream())
using (CryptoStream cryptoStream = new CryptoStream(memStream, encryptor, CryptoStreamMode.Write))
{
UTF7Encoding encoder = new UTF7Encoding();
byte[] bytes = encoder.GetBytes(toEncrypt);
cryptoStream.Write(bytes, 0, bytes.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memStream.ToArray());
}
}
Объект CryptoStream
, в лучшем случаенасколько я знаю, не распоряжаться переданным в Stream
, когда оно само уничтожается.Так как же возможно, что переменная memStream
может быть удалена более одного раза?
Большое спасибо.