请问有谁能告诉我如何从以下代码中删除所有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 : 在方法'CrytpoServices.Encrypt(string, byte[], byte[])'中,对象'cryptoStream'可以被释放多次。为避免引发'System.ObjectDisposedException'异常,您不应该在一个对象上调用Dispose超过一次: 行数:34
警告 8 CA2202 : Microsoft.Usage : 在方法'CrytpoServices.Encrypt(string, byte[], byte[])'中,对象'memoryStream'可以被释放多次。为避免引发'System.ObjectDisposedException'异常,您不应该在一个对象上调用Dispose超过一次: 行数:34,37
要查看这些警告,您需要使用Visual Studio代码分析(这些不是C#编译器警告)。
[SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Justification="BrainSlugs83 said so.")]
" - 确保您的using块中有一个 "using System.Diagnostics.CodeAnalysis;
" 语句。 - BrainSlugs83