CA1047:不要在密封类型中声明受保护的成员
类型名 |
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(){}
}
}