共用方式為


CA1047:不要在密封型別中宣告 protected 成員

型別名稱

DoNotDeclareProtectedMembersInSealedTypes

CheckId

CA1047

分類

Microsoft.Design

中斷變更

中斷

原因

公用 (Public) 型別為 sealed (在 Visual Basic 中則為 NotInheritable),而且會宣告 Protected 成員或 Protected 巢狀型別。 這項規則不會報告 Finalize 方法的違規情形,這些方法必須遵循此模式。

規則描述

型別會宣告 protected 成員,如此繼承的型別即可存取或覆寫成員。 在定義中可以得知,您無法繼承自密封型別,這表示無法呼叫密封型別上的 Protected 方法。

C# 編譯器會針對這個錯誤發出警告。

如何修正違規

若要修正此規則的違規情形,請將成員的存取層級變更為 Private,或者讓型別變成可以繼承。

隱藏警告的時機

請勿隱藏此規則的警告。 使型別保持它的目前狀態可能會造成維護問題,而且不會提供任何好處。

範例

下列範例顯示違反此規則的型別。

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