Aracılığıyla paylaş


CA2215: Atma yöntemleri taban sınıf atmayı çağırmalıdır

TypeName

DisposeMethodsShouldCallBaseClassDispose

CheckId

CA2215

Kategori

Microsoft.Usage

Değişiklik kesiliyor

Olmayan bölme

Neden

Uygulayan bir tür IDisposable da uygulayan tipinden devralan IDisposable.Dispose Miras türü yöntemi çağrısı değil Dispose ana türü yöntemi.

Kural Tanımı

Bir tür bir atılabilen tipinden devralan, çağırması gerekir Dispose yöntemi, kendi içinde Temel türün Dispose yöntemi.Temel tür yönteminin çağrılması, taban türü tarafından oluşturulan tüm kaynaklar serbest bırakılır Dispose sağlar.

İhlalleri düzeltmek nasıl

Bu kuralı ihlal düzeltmek için çağrı base.Dispose in your Dispose method.

Uyarıları ne zaman

Bu kuraldan bir uyarı durumunda bastırmak güvenlidir çağrısı base.Dispose kuralı çeklerin arama daha derin düzeyde oluşur.

Örnek

Aşağıdaki örnek, bir tür gösterir TypeA , uygulayan 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);
        }
    }
}

Aşağıdaki örnek bir türünü gösterir TypeB tipinden devralan TypeA ve doğru çağırır, Dispose yöntemi.

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

Ayrıca bkz.

Başvuru

IDisposable

Diğer Kaynaklar

Implementing Finalize and Dispose