es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo usar DependencyResolver en una aplicación de Net48 autohospedada?

He recibido una tarea que consiste en crear una aplicación .Net 4.8 que contiene un “HttpSelfHostServer”.
Estoy atascado en la tarea de asignar “IServiceCollection services” a config.DependencyResolver (de tipo System.Web.Http.Dependencies.IDependencyResolver).

Realmente preferiría no usar autofac u otros frameworks, pero todas las guías que encuentro apuntan hacia estos frameworks. ¿Microsoft no ofrece alguna manera de hacerlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, Microsoft proporciona una forma de asignar servicios IServiceCollection al config.DependencyResolver para una aplicación .Net 4.8 que contiene un “HttpSelfHostServer”. Puedes usar la característica de inyección de dependencias incorporada de .Net Core llamada “IServiceProvider”. Primero, necesitas crear una instancia de “IServiceProvider” utilizando “IServiceCollection” que contiene tus servicios. Luego, puedes asignar esta instancia a “config.DependencyResolver” utilizando el método “SetResolver”. Aquí tienes un ejemplo de código:

    // Crear una nueva instancia de IServiceCollection
    IServiceCollection services = new ServiceCollection();
    
    // Registrar tus servicios en IServiceCollection
    services.AddTransient<iservice1, service1="">();
    services.AddScoped<iservice2, service2="">();
    
    // Crear una instancia de IServiceProvider utilizando IServiceCollection
    IServiceProvider serviceProvider = services.BuildServiceProvider();
    
    // Asignar el resolutor a HttpSelfHostConfiguration
    HttpSelfHostConfiguration config = new HttpSelfHostConfiguration("http://localhost:8080");
    config.DependencyResolver = new DefaultDependencyResolver(serviceProvider);
    
    // Ahora puedes usar tus servicios en tus controladores de API web
    

    Ten en cuenta que “DefaultDependencyResolver” es una clase que implementa la interfaz “System.Web.Http.Dependencies.IDependencyResolver” y toma un IServiceProvider como parámetro. Esto te permitirá usar la característica de inyección de dependencias de .Net Core sin utilizar ningún marco de trabajo de terceros como Autofac.</iservice2,></iservice1,>

Comments are closed.