다음을 통해 공유


종속성 주입

중요

이 프로젝트는 실험적 릴리스입니다. 실험적 모바일 Blazor 바인딩을 사용해 보고 에서 https://github.com/xamarin/MobileBlazorBindings피드백을 제공해 주시기 바랍니다.

애플리케이션에 종속성 주입을 통합하려면 다음 몇 단계를 수행해야 합니다.

  1. 서비스에 대한 클래스의 인터페이스 정의 날씨 앱 샘플은 앱의 단순한 특성으로 인해 인터페이스 정의를 포기하지만, 그렇지 않으면 와 같은 WeatherReport GetWeatherReport()메서드가 있는 라는 IWeatherService 인터페이스가 있습니다.

  2. 구체적인 구현을 사용하여 서비스 인터페이스 구현 예를 들면 다음과 같습니다.

    public class WeatherService : IWeatherService
    {
        public WeatherReport GetWeatherReport()
        {
            // Get weather report data...
            return weatherReport;
        }
    }
    
  3. 의 생성자에서 호스트에 App.cs서비스를 등록합니다.

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

    클래스에서 서비스에 대한 여러 등록 방법을 사용할 수 있습니다ServiceCollectionServiceExtensions.

  4. 서비스 사용. 서비스를 사용하는 방법에는 여러 가지가 있으며 가장 인기 있는 두 가지 방법은 다음과 같습니다.

    1. 사용자 지정 형식의 생성자 삽입도 종속성 주입 컨테이너에 등록됩니다. 이러한 방식으로 서비스를 사용하려면 서비스를 사용하는 클래스에 생성자 매개 변수를 추가하고, 해당 클래스를 DI 컨테이너에서 검색하면 해당 매개 변수가 DI 컨테이너의 다른 서비스로 채워집니다.

    2. 파일에서 .razor 서비스를 사용하는 작업은 파일에 사용되는 지시문을 사용하여 MainPage.razor수행 @inject 됩니다.

      @inject WeatherService WeatherService
      

      Blazor 설명서에서 지시문에 대해 @inject 자세히 알아봅니다.

하이브리드 앱에서 서비스는 앱의 네이티브 UI, 앱의 웹 파트 및 다른 모든 곳에서 공유됩니다. 하이브리드 앱 영역 간에 서비스 및 상태를 공유하는 데 필요한 특별한 단계는 없습니다.