我正在尝试解决以下代码中如何满足CA2202的问题。我理解这里的问题是,using语句也会释放encryptedStream对象。但如果我删除finally部分,它就开始抛出CA2000。
那么,符合CA2202和CA2000要求的编写方式是什么呢?
这个问题可能看起来与CA2202,如何解决此问题重复,该问题有一个被接受的答案。但你可能会意识到,该答案基于质量差,有5个反对票。此外,任何其他得票较高的答案实际上都没有解决问题。其中大多数解释了如何禁止规则或争论为什么该规则错误以及我们应该忽略它。由于该规则存在,应该有一种方法来满足它,我正在寻求社区支持来解决这个问题。
byte[] result;
MemoryStream encryptedStream = null;
try
{
encryptedStream = new MemoryStream();
using (var cryptStream = new CryptoStream(encryptedStream, cryptoTransform, CryptoStreamMode.Write))
{
cryptStream.Write(inputInBytes, 0, inputInBytes.Length);
cryptStream.FlushFinalBlock();
result = encryptedStream.ToArray();
}
}
finally
{
encryptedStream?.Dispose();
}
string output = Convert.ToBase64String(result);