CA1034: Vnořené typy neměl být viditelný
Název_typu |
NestedTypesShouldNotBeVisible |
CheckId |
CA1034 |
Kategorie |
Microsoft.design |
Změnit rozdělení |
Rozdělení |
Příčina
Externě viditelné typ obsahuje deklarace typu externě viditelné.Chráněné typy vnořených vyčíslení a jsou osvobozeny od tohoto pravidla.
Popis pravidla
Vnořený typ je typ deklarována v rámci působnosti jiného typu.Vnořené typy jsou užitečné pro podrobnosti implementace soukromé obsahující typ zapouzdření.Pro tento účel použít vnořené typy nesmí být viditelné.
Nepoužívejte externě viditelné vnořené typy logických seskupení nebo k zamezení kolize názvů; místo toho použijte obory názvů.
Vnořené typy zahrnují pojem usnadnění člen není jasně srozumitelný některé programátory.
Chráněné typy lze použít v podtřídách a vnořené typy úprav scénářů předem.
Jak opravit porušení
Pokud nezamýšlíte vnořený typ zvnějšku viditelný, změňte na typ usnadnění.Vnořený typ jinak, odeberte z nadřazené.Účelem vnořování je kategorizovat vnořený typ, místo toho vytvořit hierarchii pomocí oboru názvů.
Při potlačení upozornění
Nepotlačovat upozornění od tohoto pravidla.
Příklad
Následující příklad ukazuje typ, který porušuje pravidlo.
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();
}
};
}