Я реализации IDisposable
, и в моем Dispose()
метод при вызове Dispose()
на других управляемых ресурсов я использую оператор ?.
так:CA2213 предупреждение при использовании?. (Нуль-условный оператор) для вызова Dispose
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if(disposing)
{
_ChangeLock?.Dispose();
}
}
Я до сих пор получаю следующее code analysis error:
CA2213: 'MyClass' содержит поле 'MyClass._ChangeLock', который имеет тип IDisposable: 'ReaderWriterLockSlim'. Измените метод Dispose на «MyClass», чтобы вызвать Dispose или Close в этом поле.
Если я изменяю к стандартной проверке нулевой, предупреждение анализа кода уходит:
if(_ChangeLock != null)
_ChangeLock.Dispose();
Есть ли что-то не так с помощью нуль-условного оператора так, как я, или этот анализ коды устаревшее правило, что ли?
Это правило СА, которое необходимо обновить. – Corey