Aracılığıyla paylaş


CA1034: İç içe türler görünebilir olmamalıdır

TypeName

NestedTypesShouldNotBeVisible

CheckId

CA1034

Kategori

Microsoft.Design

Değişiklik kesiliyor

Bölme

Neden

Dışarıdan görünen bir tür dışarıdan görünen tür bildirimini içerir.İç içe listeleme ve korunan türler bu kuralın dışındadır.

Kural Tanımı

İç içe türü, başka bir kapsamda bildirilen bir türüdür.İç içe geçmiş türleri, özel uygulama ayrıntılarını içeren tür kapsüllenmesinde kullanışlıdır.Bu amaçla kullanılan, iç içe türü dışarıdan görünür olmalıdır.

Dışarıdan görünen iç içe türü mantıksal bir gruplandırma veya ad çakışmaları önlemek için kullanmayın; Bunun yerine, ad alanlarını kullanın.

Bazı programcılar açıkça anlaşılmıyor üye erişilebilirlik kavramı iç içe türleri içerir.

Korunan türler, alt sınıflar ve Gelişmiş özelleştirme senaryoları iç içe türlerinde kullanılabilir.

İhlalleri düzeltmek nasıl

İç içe türü dışarıdan görülebilir olmasını istemiyorsanız, tipinin erişilebilirlik değiştirin.Aksi halde, iç içe türü, üst nesneden kaldırın.İç içe türü kategorize etmek için iç içe geçme amacı ise, bunun yerine hiyerarşisi oluşturmak için bir ad kullanın.

Uyarıları ne zaman

Uyarı Bu kuraldan bastırmak değil.

Örnek

Aşağıdaki örnek, kuralını ihlal eden bir türü gösterilir.

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