C# 10 -  Usando namespaces com escopo de arquivo (File Scoped Namespaces)


Hoje veremos o novo recurso File Scoped Namespaces do C# 10.

O novo recurso do C# 10 chamado de File Scoped Namespaces permite utilizar um namespace para um arquivo inteiro ao invés de usar um bloco {}.

Vamos supor que você tem o código abaixo definindo a classe Aluno :

     using System.ComponentModel.DataAnnotations;
     namespace C10_Namespaces
     {
        public partial class Aluno
        {
            [Key]
            public int Id { get; set; }
            [Required]
            [StringLength(80, ErrorMessage = "")]
             public string Nome { get; set; }
             [Required]
            public int Idade { get; set; }
        }
    }

Com novo recurso File Scoped Namespaces do C# 10  podemos agora definir o namespace da seguinte forma:

     using System.ComponentModel.DataAnnotations;
     namespace C10_Namespaces;

     public partial class Aluno
     {
        [Key]
        public int Id { get; set; }
        [Required]
        [StringLength(80, ErrorMessage = "")]
        public string Nome { get; set; }
        [Required]
        public int Idade { get; set; }
     }

Agora a declaração pode ser feita usando a palavra namespace seguida do nome e ponto e vírgula(;) e assim não precisamos envolver o bloco de código entre colchetes {} : namespace C10_Namespaces;

Com isso o namespace terá o escopo do arquivo inteiro e a invocação de objetos dentro do namespace continua a mesma:

var aluno = new C10_Namespaces.Aluno();

O recurso presume que tudo o que está dentro desse arquivo (portanto, com escopo de arquivo) está dentro do mesmo namespace.

Uma desvantagem desta implementação é que ao usar namespaces a nível de arquivo você não pode ter dois namespaces no mesmo arquivo o que é algo muito difícil de acontecer.

E estamos conversados...

"Bendito o Deus e Pai de nosso Senhor Jesus Cristo, o qual nos abençoou com todas as bênçãos espirituais nos lugares celestiais em Cristo;  Como também nos elegeu nele antes da fundação do mundo, para que fôssemos santos e irrepreensíveis diante dele em amor;"
Efésios 1:3,4

Referências:


José Carlos Macoratti