Sdílet prostřednictvím


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();
        }
    };
}