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