Compartilhar via


CA2215: os métodos de descarte devem chamar o descarte da classe base

TypeName

DisposeMethodsShouldCallBaseClassDispose

CheckId

CA2215

Categoria

Microsoft.Usage

Alteração Significativa

Sem Quebra

Causa

Um tipo que implementa IDisposable herda de um tipo que também implementa IDisposable.O método de Dispose do tipo herdando não chama o método de Dispose do tipo pai.

Descrição da Regra

Se um tipo é herdada de um tipo descartável, deve chamar o método de Dispose do tipo de base de dentro de seu próprio método de Dispose .Chamando o método do tipo de base descartado garante que todos os recursos criados pelo tipo de base sejam liberados.

Como Corrigir Violações

Para corrigir uma violação desta regra, chame base.Dispose em seu método de Dispose .

Quando Suprimir Alertas

É seguro suprimir um aviso dessa regra se a chamada a base.Dispose ocorre no nível mais profundo de chamada das verificações de regra.

Exemplo

O exemplo a seguir mostra um tipo TypeA que implementa IDisposable.

using System;  

namespace UsageLibrary
{
    public class  TypeA :IDisposable
    {

        protected virtual void Dispose(bool disposing) 
        {
            if (disposing) 
            {
                // Dispose managed resources
            }

            // Free native resources
        }

        public void Dispose()
        {

                Dispose(true);

                GC.SuppressFinalize(this);

        }

        // Disposable types implement a finalizer.
        ~TypeA()
        {
            Dispose(false);
        }
    }
}

O exemplo a seguir mostra um tipo TypeB que herda do tipo TypeA corretamente e chama seu método de Dispose .

Imports System

Namespace UsageLibrary

  Public Class TypeB
      Inherits TypeA

      Protected Overrides Sub Finalize()
          Try
              Dispose(False)
          Finally 
              MyBase.Finalize()
          End Try 
      End Sub 

  End Class 

End Namespace

Consulte também

Referência

IDisposable

Outros recursos

Implementing Finalize and Dispose