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