Estou recebendo o seguinte aviso no Visual Studio 2019, depois de criar um novo projeto do ASP.NET Core 3:
Aviso CA1052 O tipo 'Programa' é um tipo de suporte estático, mas não é estático nem NotInheritable
public class Program
{
public static void Main(string[] args)
{
// ...
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
// ...
}
vs
public static class Program
{
public static void Main(string[] args)
{
// ...
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
// ...
}
Devo adicionar o modificador estático? Porque porque não? Prós e contras'?
Editar: Esta é uma API do ASP.NET Core 3
c#
asp.net
asp.net-core
Nelson Sousa
fonte
fonte
Respostas:
Em termos mais básicos, pode-se imaginar que a mensagem diga:
É uma recomendação marcar sua classe como estática porque ela contém apenas coisas estáticas. Isso impedirá que alguém cometa o erro de tentar herdar dela e pensar que pode fazer algo útil em termos de herança com a versão herdada
A Microsoft não a marca como estática para você, porque não há nada de especial no Programa; você pode colocar métodos não estáticos nele ou o seu
static void Main
em outra classe, como Person, que é instável.Isso funcionaria bem; uma classe não precisa ser estática para hospedar o ponto de entrada do aplicativo e, nesse caso, a classe não pode ser estática porque possui membros não estáticos. Pode ser (e é, no geral) instanciado no principal. Não se chama Programa; não existe uma classe chamada Program em nenhum lugar e esse pequeno aplicativo ainda será executado (não faz muito ..)
No seu caso, faça o recomendado e adicione um modificador estático à sua classe, pois isso tornará seu programa um pouco mais robusto ou adicione um membro da instância se você puder pensar em um motivo válido para instanciar o Programa ou ignore a mensagem e continue com sua classe não estática que contém apenas métodos estáticos - ainda funcionará
fonte