CA2202, comment résoudre cette affaire

Quelqu'un peut-il me dire comment supprimer tous les CA2202 avertissements à partir du code suivant?

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

Avertissement 7 CA2202 : Microsoft.Utilisation : l'Objet "cryptoStream' peuvent être éliminés plus d'une fois dans la méthode 'CryptoServices.Chiffrer(string, byte[], byte[])'. Pour éviter de générer un Système.ObjectDisposedException vous ne devriez pas appeler dispose de plus d'une heure sur un objet.: Lignes: 34

Avertissement 8 CA2202 : Microsoft.Utilisation : l'Objet "memoryStream' peuvent être éliminés plus d'une fois dans la méthode 'CryptoServices.Chiffrer(string, byte[], byte[])'. Pour éviter de générer un Système.ObjectDisposedException vous ne devriez pas appeler dispose de plus d'une heure sur un objet.: Lignes: 34, 37

Vous avez besoin de Visual Studio Analyse du Code pour voir ces mises en garde (ce ne sont pas de compilateur c# mises en garde).

  • Ce code ne génère pas ces mises en garde.
  • Je reçois des avertissements 0 pour cette (Warn niveau 4, VS2010). Et pour quelqu'un googler problèmes dans ce domaine, des moyens d'ajouter le texte, les avertissements ainsi.
  • CAxxxx avertissements sont générés par Analyse de Code et FxCop.
  • Cet avertissement ne s'applique pas à l'montré code -- avertissements peuvent être supprimées pour ce scénario. Une fois que vous avez examiné votre code et d'accord avec cette évaluation, la place au-dessus de votre méthode: "[SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Justification="BrainSlugs83 said so.")]" -- assurez-vous d'avoir un "using System.Diagnostics.CodeAnalysis;" déclaration de l'usage de votre bloc.
  • Regardez: msdn.microsoft.com/en-us/library/...
InformationsquelleAutor testalino | 2010-09-30