Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

350
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!