前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CA1047:不要在密封类型中声明受保护的成员

CA1047:不要在密封类型中声明受保护的成员

作者头像
呆呆
发布2022-01-10 09:23:10
6020
发布2022-01-10 09:23:10
举报
文章被收录于专栏:centosDai

规则 ID

CA1047

类别

设计

修复是中断修复还是非中断修复

非中断

原因

公共类型是 sealed(在 Visual basic 中为 NotInheritable),并声明了一个受保护的成员或受保护的嵌套类型。 此规则不报告 Finalize 方法的冲突,这些方法必须遵循此模式。

规则说明

类型声明受保护的成员,使继承类型可以访问或重写该成员。 按照定义,不能从密封类型继承,这表示不能调用密封类型上的受保护方法。

对于此错误,C# 编译器会发出警告。

如何解决冲突

若要解决此规则的冲突,请将成员的访问级别更改为专用,或使该类型可继承。

何时禁止显示警告

不禁止显示此规则发出的警告。 使类型保持当前状态可能会导致维护问题,而且不会带来任何好处。

配置代码以进行分析

使用下面的选项来配置代码库的哪些部分要运行此规则。

包含特定的 API 图面

你可以仅为此规则、为所有规则或为此类别中的所有规则配置此选项(设计)。 有关详细信息,请参阅代码质量规则配置选项。

包含特定的 API 图面

你可以根据代码库的可访问性,配置要针对其运行此规则的部分。 例如,若要指定规则应仅针对非公共 API 图面运行,请将以下键值对添加到项目中的 .editorconfig 文件:

dotnet_code_quality.CAXXXX.api_surface = private, internal

示例

下面的示例演示了与此规则发生冲突的类型。

public sealed class SealedClass

{

protected void ProtectedMethod(){}

}

Public NotInheritable Class BadSealedType

Protected Sub MyMethod

End Sub

End Class

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档