CA1034: Zagnieżdżone typy nie powinny być widoczne
TypeName |
NestedTypesShouldNotBeVisible |
CheckId |
CA1034 |
Kategoria |
Microsoft.Design |
Złamanie zmiany |
Złamanie |
Przyczyna
Typ widocznych zewnętrznie zawiera deklarację typu widoczne z zewnątrz.Wyliczeń zagnieżdżonych i typów chronionych są zwolnione od tej reguły.
Opis reguły
Zagnieżdżony typ to typ zadeklarowany w zakres innego typu.Zagnieżdżone typy są przydatne do enkapsulacji szczegóły implementacji prywatne zawierające typu.Stosowane w tym celu, zagnieżdżonych typów nie powinny być widoczne z zewnątrz.
Nie należy używać widoczne z zewnątrz zagnieżdżonych typów do logicznego grupowania lub w celu uniknięcia konfliktów nazw; Zamiast tego należy użyć przestrzeni nazw.
Zagnieżdżone typy pojęcie Członkowskie ułatwień dostępu, które Niektórzy programiści nie rozumieją, wyraźnie.
Typy chronionych może być używane w podklasy i zagnieżdżonych typów w scenariuszach dostosowywania zaliczki.
Jak naprawić naruszenia
Jeśli nie zamierzasz typu zagnieżdżonego być widoczne z zewnątrz, należy zmienić typ ułatwień dostępu.W przeciwnym wypadku usuń typu zagnieżdżonego ze swojej witryny nadrzędnej.Jeśli celem zagnieżdżanie jest kategoryzowania typu zagnieżdżonego, należy korzystać z obszaru nazw, zamiast tego utworzyć hierarchię.
Kiedy do pomijania ostrzeżenia
Nie pomijaj ostrzeżenie od tej reguły.
Przykład
Poniższy przykład pokazuje typ, który narusza reguły.
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();
}
};
}