CA1047: Sealed 型の保護されたメンバーを宣言しません

TypeName

DoNotDeclareProtectedMembersInSealedTypes

CheckId

CA1047

分類

Microsoft.Design

互換性に影響する変更点

なし

原因

パブリック型が sealed (Visual Basic では NotInheritable) であり、プロテクト メンバーまたは入れ子にされたプロテクト型が宣言されています。 Finalize メソッドの場合、このパターンに従いますが、この規則による違反はレポートされません。

規則の説明

型でプロテクト メンバーを宣言するのは、継承する型からメンバーにアクセスまたはオーバーライドできるようにするためです。 定義によってシールされた型から継承することはできません。シールとは、シールされた型のプロテクト メソッドを呼び出すことができないということを意味します。

C# コンパイラでは、このエラーに対して警告が発行されます。

違反の修正方法

この規則違反を修正するには、メンバーのアクセス レベルをプライベートにするか、型を継承できるようにします。

警告を抑制する状況

この規則による警告は抑制しないでください。 型を現在のままにすると保守の問題が発生し、何も利点はありません。

使用例

この規則に違反する型を次の例に示します。

Imports System

Namespace DesignLibrary

   Public NotInheritable Class BadSealedType
      Protected  Sub MyMethod
      End Sub
   End Class

End Namespace
using System;

namespace DesignLibrary
{
   public sealed class SealedClass
   {
      protected void ProtectedMethod(){}
   }
}