مشاركة عبر


ca1050: قم بتعريف أنواع في مساحات الاسم

TypeName

DeclareTypesInNamespaces

CheckId

ca1050

Category

Microsoft.تصميم

تعطيل تغيير

فصل

السبب

نوع عام أو المحمية هو المعرفة خارج نطاق مسمى مساحة الاسم.

وصف القاعدة

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

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

لإصلاح انتهاكا لهذه قاعدة، قم بوضع نوع في مساحة الاسم.

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

أثناء ذلك هو مطلقا الضرورية لمنع ظهور تحذير من القيم بالموضع هو قاعدة، فإنه هو بأمان، قم بترتيب هو عند تجميع عدم استخدامه مع تجميعات الأخرى.

مثال

يظهر المثال التالي مكتبة نوع التصريح بشكل غير صحيح خارج مساحة الاسم ونوع بنفس اسم التي تم تعريفها في مساحة الاسم.

Imports System 

' Violates rule: DeclareTypesInNamespaces.
Public Class Test     

    Public Overrides Function ToString() As String        
        Return "Test does not live in a namespace!"    
    End Function 

End Class 

Namespace GoodSpace  

    Public Class Test 

        Public Overrides Function ToString() As String            
            Return "Test lives in a namespace!"        
        End Function  

    End Class 

End Namespace
using System;

// Violates rule: DeclareTypesInNamespaces.
public class Test
{
   public override string ToString()
   {
      return "Test does not live in a namespace!";
   }
}

namespace GoodSpace
{
   public class Test
   {
      public override string ToString()
      {
         return "Test lives in a namespace!";
      }
   }
}   

يستخدم تطبيق التالي مكتبة المعرفة مسبقاً. ملاحظة أن تعريف النوع خارج مساحة الاسم إنشاء متى الاسم Testهو غير مؤهل بمساحة الاسم. لاحظ أيضا أنه الوصول إلى Testنوع في Goodspace، اسم مساحة الاسم هو المطلوبة.

Imports System

Namespace ApplicationTester

    Public Class MainHolder

        Public Shared Sub Main()
            Dim t1 As New Test()
            Console.WriteLine(t1.ToString())

            Dim t2 As New GoodSpace.Test()
            Console.WriteLine(t2.ToString())
        End Sub

    End Class

End Namespace
using System;

namespace ApplicationTester
{
    public class MainHolder
    {
        public static void Main()
        {
            Test t1 = new Test();
            Console.WriteLine(t1.ToString());

            GoodSpace.Test t2 = new GoodSpace.Test();
            Console.WriteLine(t2.ToString());
        }
    }
}