Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

353
Visualizações
Mezcla de componentes de Blazor, DI y C# 8 anulables

Estoy usando .net 5 para una aplicación Blazor en un proyecto con anulabilidad habilitada. Utiliza Code Behind para crear Blazor Components. Quiero usar un constructor para poder evitar marcar todas las propiedades que no son DI como anulables para simplificar el acceso a ellas en mi código blazor. Sin embargo, si creo un constructor como public PageNumberOne(ILogger<PrimaryItem> logger) {}

Recibo el error MissingMethodException: No se definió un constructor sin parámetros para el tipo

Si uso el atributo de inyección en los elementos DI, tengo la advertencia: la propiedad no anulable _logger debe contener un valor no nulo al excitar el constructor

Entonces, ¿cómo mezclo DI con anulable sin solo marcar cada propiedad como anulable?

También podría crearlos en el cuerpo principal del bloque de "código", pero luego no puedo acceder a mis elementos DI para la inicialización porque no están disponibles hasta que se inicia OnInitialized. Así que de nuevo tengo que marcarlos como Anulables.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Trabajo en el mismo escenario: Blazor Components + Nullable. ¡Lo que hago es declarar los parámetros como anulables y uso ! (que perdona nulos) cuando uso los parámetros:

 [Inject] public NavigationManager? MyNavigationManager {get; set;} [Parameter] public MenuItem? MyMenuItem {get; set;} protected void Foo() { var currenturi = MyNavigationManager!.Uri; //<--- here var sometext = MyMenuItem!.text; //<--- here // ...

La alternativa de Kirk Woll vía comentario, más elegante en mi opinión:

Alternativamente, suponga que la inyección funcionará y declare la propiedad como:

 [Inject] public NavigationManager MyNavigationManager {get; set;} = default!;

Lo he probado y funciona bien con interfaces o clases sin constructor sin parámetros.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda