مشاركة عبر


CA1034: Nested types should not be visible

TypeName

NestedTypesShouldNotBeVisible

CheckId

ca1034

Category

Microsoft.تصميم

تعطيل تغيير

فصل

السبب

يحتوي على نوع مرئي خارجياً على إعلان نوع مرئي خارجياً. تتداخل العدادات ومحمية أنواع يتم إعفاء من هذه قاعدة.

وصف القاعدة

نوع متداخل هو معرف نوع داخل نطاق نوع آخر. متداخلة نوع s مفيدة لتغليف تفاصيل التنفيذ الخاصة احتواء نوع. يستخدم لهذا الغرض، أنواع المتداخلة يجب إلا تكون مرئي خارجياً.

لا تستخدم أنواع المتداخلة مرئي خارجياً تجمع منطقي أو إلى تجنب عدد التضاربات اسم؛ بدلاً من ذلك، استخدم مساحات الاسم.

تضمين أنواع المتداخلة notion عضو إمكانية وصول ذوي الاحتياجات الخاصة، والقيام ببعض المبرمجين لا فهم واضح.

حماية أنواع يمكن استخدامها في الفئات الفرعية وتداخل أنواع سيناريوهات التخصيص مقدما.

كيف إلى الإصلاح انتهاكات

إذا لم تكن تخطط متداخلة نوع لتكون مرئي خارجياً، تغيير التشغيل نوع's. وإلا، قم بإزالة نوع متداخل من موقعة الأصل. إذا كان الهدف التداخل هو لتصنيف نوع متداخل، باستخدام مساحة الاسم لإنشاء هيكلي بدلاً من ذلك.

عند إلى منع التحذيرات

لا بمنع تحذير من هذه قاعدة.

مثال

يلي مثال يظهر نوع يخالف قاعدة.

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