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();
Есть ли что-то не так с использованием нулевого условного оператора, как я, или это правило анализа кода устарело, или что?