Почему Code Analysis помечает меня при использовании нулевого условного оператора с Dispose()?
У меня есть класс, который реализует IDisposable
, Я изменил свой метод Dispose() из этого:
public void Dispose()
{
if (AccountCreateResetEvent != null)
{
AccountCreateResetEvent.Dispose();
AccountCreateResetEvent = null;
}
}
к этому:
public void Dispose()
{
AccountCreateResetEvent?.Dispose();
AccountCreateResetEvent = null;
}
Теперь я получаю следующую ошибку при запуске анализа кода:
"Адаптер" содержит поле "Adapter.AccountCreateResetEvent", имеющее тип IDisposable: "AutoResetEvent". Измените метод Dispose для "Adapter", чтобы он вызывал Dispose или Close для этого поля.
Это причуда анализа кода или я что-то здесь не так делаю?
РЕДАКТИРОВАТЬ: Простое полное объявление класса, который воспроизводит проблему
using System;
using System.Threading;
namespace IDisposableProblem1
{
public sealed class Account : IDisposable
{
private AutoResetEvent AccountResetEvent = new AutoResetEvent(false);
public void Dispose()
{
AccountResetEvent?.Dispose();
AccountResetEvent = null;
}
}
}