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(){}
}
}