Résolution des avertissements CA2202 lors de la suppression de plusieurs objets en C#
L'exemple de code C# suivant génère des avertissements CA2202 dans Visual Studio Code Analysis pour CryptoStream
et MemoryStream
en raison d'appels Dispose
répétés potentiels. Au lieu de modifier le code, la suppression de ces avertissements est l'approche recommandée.
Suppression des avertissements CA2202 : la solution privilégiée
Étant donné le modèle d'élimination des objets cohérent dans le code, la suppression des avertissements est préférable à la modification du code. La préoccupation concernant plusieurs appels Dispose
est infondée car la méthode IDisposable.Dispose
est conçue pour être idempotente (ignorant les appels suivants après le premier). La déclaration using
gère cela avec élégance.
Voici comment supprimer les avertissements :
<code class="language-csharp">[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times")] public static byte[] Encrypt(string data, byte[] key, byte[] iv) { using (var memoryStream = new MemoryStream()) { using (var cryptograph = new DESCryptoServiceProvider()) using (var cryptoStream = new CryptoStream(memoryStream, cryptograph.CreateEncryptor(key, iv), CryptoStreamMode.Write)) using (var streamWriter = new StreamWriter(cryptoStream)) { streamWriter.Write(data); } return memoryStream.ToArray(); } }</code>
Justification de la suppression
La documentation de la méthode IDisposable.Dispose
indique explicitement que les appels au-delà du premier sont ignorés. Les instructions using
imbriquées dans le code créent un scénario dans lequel plusieurs objets gèrent l'élimination, mais cela est géré correctement par le framework. Par conséquent, l’avertissement CA2202 est inutile et peut être supprimé en toute sécurité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!