Почему 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;
        }
    }
}

0 ответов

Другие вопросы по тегам