CA1034: 入れ子にされた型を参照可能にすることはできません
プロパティ | 値 |
---|---|
ルール ID | CA1034 |
Title | 入れ子にされた型を参照可能にすることはできません |
[カテゴリ] | デザイン |
修正が中断ありか中断なしか | あり |
.NET 8 では既定で有効 | いいえ |
原因
外部で参照できる型に、外部で参照できる型宣言が含まれています。 入れ子にされた列挙型、protected 型、ビルダー パターンにはこの規則は適用されません。
規則の説明
入れ子にされた型とは、別の型のスコープ内で宣言された型のことです。 入れ子にされた型は、それを入れ子にする型のプライベート実装の詳細をカプセル化するときに便利です。 このような用途なので、入れ子にされた型は外部から参照できないようにします。
入れ子にされた型が外部から参照できるなら、論理的なグループ化に使用しないでください。あるいは名前の競合を避ける目的で使用しないでください。代わりに、名前空間を使用してください。
入れ子にされた型には、メンバー アクセシビリティという概念が含まれます。これはプログラマーに明確に理解されていない場合があります。
protected 型は、高度なカスタマイズ シナリオで、サブクラスや入れ子にされた型で使用できます。
違反の修正方法
入れ子にされた型を外部から参照させない場合、型のアクセシビリティを変更します。 それ以外の方法としては、入れ子にされた型をその親から削除します。 入れ子を使用する目的が入れ子にされた型の分類にある場合、代わりに名前空間を使用して階層を作成してください。
どのようなときに警告を抑制するか
この規則による警告は抑制しないでください。
例
次の例は、規則に違反する型を示しています。
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
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET