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