CA2221: методы завершения должны быть защищены
TypeName |
FinalizersShouldBeProtected |
CheckId |
CA2221 |
Категория |
Microsoft.Usage |
Критическое изменение |
Не критическое |
Причина
Открытый тип реализует метод завершения, для которого не указан доступ из семейства (модификатор protected).
Описание правила
В методах завершения должен использоваться модификатор доступа из семейства. Данное правило принудительно применяется компиляторами языков C#, Visual Basic и Visual C++.
Устранение нарушений
Чтобы устранить нарушение данного правила, сделайте метод завершения доступным из семейства.
Отключение предупреждений
Для этого правила отключать вывод предупреждений не следует.
Пример
Данное правило не может быть нарушено в языках .NET верхнего уровня; нарушения возникают при написании кода на языке MSIL.
// =============== CLASS MEMBERS DECLARATION ===================
// note that class flags, 'extends' and 'implements' clauses
// are provided here for information only
.namespace UsageLibrary
{
.class public auto ansi beforefieldinit FinalizeMethodNotProtected
extends [mscorlib]System.Object
{
.method public hidebysig instance void
Finalize() cil managed
{
// Code size 1 (0x1)
.maxstack 0
IL_0000: ret
} // end of method FinalizeMethodNotProtected::Finalize
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 1
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method FinalizeMethodNotProtected::.ctor
} // end of class FinalizeMethodNotProtected
} // end of namespace
См. также
Ссылки
Реализация методов Finalize и Dispose для очистки неуправляемых ресурсов