Compartir a través de


CA1050: Declare tipos en espacios de nombres

TypeName

DeclareTypesInNamespaces

Identificador de comprobación

CA1050

Categoría

Microsoft.Design

Cambio problemático

Problemático

Motivo

Un tipo público o protegido se define fuera del ámbito de un espacio de nombres.

Descripción de la regla

Los tipos se declaran en los espacios de nombres para evitar conflictos de nombre y como una forma de organizar los tipos relacionados en una jerarquía de objetos.Los tipos que están fuera de cualquier espacio de nombres se encuentran en un espacio de nombres global al que no se puede hacer referencia en el código.

Cómo corregir infracciones

Para corregir las infracciones de esta regla, coloque el tipo en un espacio de nombres.

Cuándo suprimir advertencias

Aunque nunca tiene que suprimir una advertencia de esta regla, es seguro hacerlo cuando el ensamblado no se vaya a usar nunca junto con otros ensamblados.

Ejemplo

El siguiente ejemplo muestra una biblioteca con un tipo declarado incorrectamente fuera del espacio de nombres, y otro tipo con el mismo nombre declarado dentro del espacio de nombres.

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

La aplicación siguiente utiliza la biblioteca definida previamente.Tenga en cuenta que el tipo que se declara fuera de un espacio de nombres es creado cuando el nombre Test no está calificado por un espacio de nombres.También observe que es necesario el nombre del espacio de nombres para obtener acceso al tipo Test en 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());
        }
    }
}