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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage