Поделиться через


CA2215: методы Dispose должны вызывать такие же методы базового класса

TypeName

DisposeMethodsShouldCallBaseClassDispose

CheckId

CA2215

Категория

Microsoft.Usage

Критическое изменение

Не критическое

Причина

Тип, который реализует IDisposable, наследует от типа, который также реализует IDisposable.Метод Dispose наследующего типа не вызывает метод Dispose родительского типа.

Описание правила

Если тип наследует от удаляемого типа, он должен вызвать метод Dispose базового типа из собственного метода Dispose.Вызов метода базового типа Dispose гарантирует, что освобождаются все ресурсы, созданные базовым типом.

Устранение нарушений

Чтобы устранить нарушение данного правила, вызовите метод base.Dispose из метода Dispose.

Отключение предупреждений

Можно игнорировать предупреждение этого правила, если вызов base.Dispose происходит на более глубоком уровне вызова по сравнению с уровнем проверки правила.

Пример

В следующем примере показан тип TypeA, который реализует объект 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);
        }
    }
}

В следующем примере показан тип TypeB, который наследуется от типа TypeA и правильно вызывает его метод 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

См. также

Ссылки

IDisposable

Другие ресурсы

Implementing Finalize and Dispose