CA1034:巢狀類型不應該為可見的

屬性
規則識別碼 CA1034
標題 巢狀類型不應該為可見的
類別 設計
修正程式是中斷或非中斷 中斷
預設在 .NET 8 中啟用 No

原因

外部可見型別包含外部可見型別宣告。 巢狀列舉、受保護的類型和產生器模式會豁免此規則。

檔案描述

巢狀類型是在另一種類型範圍內宣告的類型。 巢狀類型適用於封裝包含型別的私人實作詳細數據。 因為有這樣的用途,所以巢狀類型不應為外部可見的。

請勿將外部可見的巢狀類型用於邏輯群組,或避免名稱衝突;請改用命名空間。

巢狀類型包含成員輔助功能的概念,有些程式設計人員無法清楚了解這些概念。

在預先自定義案例中,受保護的類型可用於子類別和巢狀類型。

如何修正違規

如果您不想讓巢狀類型在外部可見,請變更類型的輔助功能。 否則,請從其父代中移除巢狀類型。 如果巢狀的目的是將巢狀類型分類,請改用命名空間來建立階層。

隱藏警告的時機

請勿隱藏此規則的警告。

範例

下列範例顯示違反規則的型別。

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