CA1034:嵌套类型不应是可见的
属性 | 值 |
---|---|
规则 ID | CA1034 |
标题 | 嵌套类型不应是可见的 |
类别 | 设计 |
修复是中断修复还是非中断修复 | 重大 |
在 .NET 8 中默认启用 | 否 |
原因
外部可见类型包含外部可见类型声明。 嵌套列举、受保护类型和生成器模式不受此规则的限制。
规则说明
嵌套类型是在另一个类型的范围中声明的类型。 嵌套类型用于封装包含类型的私有实现详细信息。 如果用于此用途,则嵌套类型不应是外部可见的。
不要使用外部可见嵌套类型进行逻辑分组或避免名称冲突;请改为使用命名空间。
嵌套类型包括成员可访问性的概念,对此一些程序员并不清楚了解。
在高级自定义场景中,受保护的类型可用于子类和嵌套类型。
如何解决冲突
如果不打算让嵌套类型在外部可见,请更改该类型的可访问性。 否则,请从其父级中删除嵌套类型。 如果嵌套的目的是对嵌套类型进行分类,请改为使用命名空间来创建层次结构。
何时禁止显示警告
不禁止显示此规则发出的警告。
示例
下面的示例演示了与规则冲突的类型。
public class ParentType
{
public class NestedType
{
public NestedType()
{
}
}
public ParentType()
{
NestedType nt = new NestedType();
}
}
Imports System
Namespace ca1034
Class ParentType
Public Class NestedType
Sub New()
End Sub
End Class
Sub New()
End Sub
End Class
End Namespace