CA2213 Warnung bei Verwendung von?. (nullbedingter Operator) zum Aufrufen von Dispose
Ich implementiereIDisposable
und in meinemDispose()
Methode beim Aufruf vonDispose()
auf anderen verwalteten Ressourcen verwende ich das?.
Operator wie folgt:
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if(disposing)
{
_ChangeLock?.Dispose();
}
}
Ich bekomme immer noch die folgendencode analysis error:
CA2213: 'MyClass' enthält das Feld 'MyClass._ChangeLock' mit dem IDisposable-Typ 'ReaderWriterLockSlim'. Ändern Sie die Dispose-Methode in "MyClass", um Dispose oder Close in diesem Feld aufzurufen.
Wenn ich zu einem Standard-Null-Check wechsle, verschwindet die Warnung zur Code-Analyse:
if(_ChangeLock != null)
_ChangeLock.Dispose();
Ist etwas falsch an der Verwendung des nullbedingten Operators, wie ich bin, oder ist diese Code-Analyse-Regel veraltet, oder was?