Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

359
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda