CA2202, как решить этот случай

Кто-нибудь может сказать мне, как удалить все предупреждения CA2202 из следующего кода?

public static byte[] Encrypt(string data, byte[] key, byte[] iv)
{
    using(MemoryStream memoryStream = new MemoryStream())
    {
        using (DESCryptoServiceProvider cryptograph = new DESCryptoServiceProvider())
        {
            using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptograph.CreateEncryptor(key, iv), CryptoStreamMode.Write))
            {
                using(StreamWriter streamWriter = new StreamWriter(cryptoStream))
                {
                    streamWriter.Write(data);
                }
            }
        }
        return memoryStream.ToArray();
    }
}

Предупреждение 7 CA2202: Microsoft.Usage: объект 'cryptoStream' может быть удален более одного раза в метод 'CryptoServices.Encrypt (string, byte [], byte []) ». Чтобы избежать генерации System.ObjectDisposedException, не следует вызывать Dispose более одного раза для объекта .: Строки: 34

Предупреждение 8 CA2202: Microsoft .Usage: объект 'memoryStream' можно удалить более одного раза в методе 'CryptoServices.Encrypt (string, byte [], byte [])'. Чтобы избежать генерации System.ObjectDisposedException, вы не должны вызывать Dispose более одного раза в объект .: Строки: 34, 37

Чтобы увидеть эти предупреждения, вам потребуется Visual Studio Code Analysis (это не предупреждения компилятора C #).

101
задан Ben Smith 14 May 2014 в 15:50
поделиться