Aracılığıyla paylaş


CA1050: Ad alanlarında türleri bildirin

TürAdı

DeclareTypesInNamespaces

CheckId

CA1050

Kategori

Microsoft.Design

Bozan Değişiklik

Bozan

Sebep

Ortak veya korumalı tür, adalanı olarak adlandırılan bir kapsamın dışında tanımlanır.

Kural Tanımı

Türlerin ad çakışmalarını önlemek için ad alanlarını ve ilgili türü bir nesne sıradüzeni içinde düzenlemeniz için bir yöntem olarak bildirilir.Adlandırılmış ad alanının dışındaki kodda referans edilmeyen genel bir ad alanındaki türlerdir.

İhlallerin Düzeltilmesi

Bu kuralın ihlalini düzeltmek için, bir ad alanına bir tür yerleştirilmesi

Uyarılar Ne Zaman Bastırılmalı

Bu kuraldan bir uyarıyı asla bastırmak zorunda kalmamakla beraber derlemeler diğer derlemeler ile birlikte hiç bir zaman kullanmadığında güvenli olur.

Örnek

Aşağıdaki örnek, bir adalanı dışında bildirilen bir türe sahip kütüphaneyi ve bir adalanında bildirilen aynı ada sahip bir türü gösterir.

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!";
      }
   }
}   

Aşağıdaki uygulama önceden tanımlanmış bir kütüphaneyi kullanır.Bir adalanı dışında belirtilen bir türün isim tarafından Test adı niteliğinde olmadığı zaman oluşturulduğunu unutmayın.Bir Goodspace içinde Test türüne erişmek için ad alanı adı gerektiğini unutmayın.

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