Compartir a través de


Inserción de dependencias

Importante

Este proyecto es una versión experimental. Esperamos que pruebe Experimental Mobile Blazor Bindings y proporcione comentarios en https://github.com/xamarin/MobileBlazorBindings.

La incorporación de la inserción de dependencias en una aplicación implica algunos pasos:

  1. Definición de una interfaz de clase para el servicio. El ejemplo de aplicación meteorológica precede a las definiciones de interfaz debido a la naturaleza simple de la aplicación, pero, de lo contrario, tendría una interfaz denominada IWeatherService con métodos en ella, como WeatherReport GetWeatherReport().

  2. Implementación de la interfaz de servicio con una implementación concreta. Por ejemplo:

    public class WeatherService : IWeatherService
    {
        public WeatherReport GetWeatherReport()
        {
            // Get weather report data...
            return weatherReport;
        }
    }
    
  3. Registro del servicio con el host en App.csel constructor de :

    var host = Host.CreateDefaultBuilder()
        .ConfigureServices((hostContext, services) =>
        {
            // Register app-specific services
            services.AddSingleton<IWeatherService, WeatherService>();
        })
        .Build();
    

    Hay varios métodos de registro para los servicios disponibles en la ServiceCollectionServiceExtensions clase .

  4. Consumo de los servicios. Hay varias maneras de consumir los servicios y dos de las formas más populares son:

    1. La inserción de constructores en tipos personalizados también se registró en el contenedor de inserción de dependencias. Para consumir un servicio de esta manera, agregue un parámetro de constructor a la clase que usa el servicio y, cuando esa clase se recupere del contenedor de inserción de dependencias, tendrá sus parámetros rellenados con otros servicios del contenedor de inserción de dependencias.

    2. El consumo de servicios en .razor archivos se realiza con la @inject directiva , que se usa en el MainPage.razor archivo :

      @inject WeatherService WeatherService
      

      Obtenga más información sobre la @inject directiva en la documentación de Blazor.

Sugerencia

En las aplicaciones híbridas, los servicios se comparten entre la interfaz de usuario nativa de la aplicación, el elemento web de la aplicación y en cualquier otro lugar. No se requieren pasos especiales para compartir servicios y estado entre áreas de aplicaciones híbridas.