CA2213 предупреждение при использовании? (нулевой оператор) для вызова Dispose

Я реализуюIDisposableи по моемуDispose() метод при вызовеDispose() на других управляемых ресурсах я использую?. Оператор вроде так:

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if(disposing)
        {
            _ChangeLock?.Dispose();
        }
    }

Я все еще получаю следующееошибка анализа кода:

CA2213: «MyClass» содержит поле «MyClass._ChangeLock», имеющее тип IDisposable: «ReaderWriterLockSlim». Измените метод Dispose для MyClass, чтобы он вызывал Dispose или Close для этого поля.

Если я переключусь на стандартную нулевую проверку, предупреждение анализа кода исчезнет:

if(_ChangeLock != null)
    _ChangeLock.Dispose();

Есть ли что-то не так с использованием нулевого условного оператора, как я, или это правило анализа кода устарело, или что?

Ответы на вопрос(1)

Ваш ответ на вопрос