CA1034:巢狀類型不應為可見
型別名稱 |
NestedTypesShouldNotBeVisible |
CheckId |
CA1034 |
分類 |
Microsoft.Design |
中斷變更 |
中斷 |
原因
外部可見的型別包含外部可見的型別宣告 (Type Declaration),但是巢狀列舉和受保護的型別則不受限於此規則。
規則描述
巢狀型別是在其他型別範圍內宣告的型別。巢狀型別在封裝包含型別 (Containing Type) 私用的 (Private) 實作細節時相當有用。因為有這樣的用途,所以巢狀型別不應為外部可見的。
請勿使用外部可見的巢狀型別進行邏輯群組或避免名稱衝突,請改用命名空間。
巢狀型別包含成員存取範圍的概念;某些程式設計人員並不十分清楚這個概念。
受保護的型別適用於進階自訂案例中的子類別和巢狀型別。
如何修正違規
如果您不想讓巢狀型別變成外部可見,請變更型別的存取範圍。否則,請從父代 (Parent) 移除巢狀型別。如果巢狀結構的目的是將巢狀型別進行分類,請改用命名空間建立階層架構。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列範例顯示違反規則的型別。
Imports System
Namespace DesignLibrary
Class ParentType
Public Class NestedType
Sub New()
End Sub
End Class
Sub New()
End Sub
End Class
End Namespace
using System;
namespace DesignLibrary
{
internal class ParentType
{
public class NestedType
{
public NestedType()
{
}
}
public ParentType()
{
NestedType nt = new NestedType();
}
}
}
using namespace System;
namespace DesignLibrary
{
public ref class ParentType
{
public:
ref class NestedType
{
public:
NestedType()
{
}
};
ParentType()
{
NestedType^ nt = gcnew NestedType();
}
};
}