次の方法で共有


依存関係の挿入

重要

このプロジェクトは実験的なリリースです。 試験的なモバイル 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. サービスの使用。 サービスを使用する方法はいくつかありますが、最も一般的な方法の 2 つを次に示します。

    1. カスタム型のコンストラクターの挿入も依存関係挿入コンテナーに登録されます。 この方法でサービスを使用するには、サービスを使用するクラスにコンストラクター パラメーターを追加します。そのクラスが DI コンテナーから取得されると、そのパラメーターに DI コンテナーから他のサービスが設定されます。

    2. ファイル内のサービスの.razor使用は、 ファイルで@inject使用される ディレクティブを使用してMainPage.razor行われます。

      @inject WeatherService WeatherService
      

      ディレクティブの詳細については、@injectBlazor のドキュメントを参照してください

ヒント

ハイブリッド アプリでは、アプリのネイティブ UI、アプリの Web パーツ、およびその他の場所の間でサービスが共有されます。 ハイブリッド アプリの領域間でサービスと状態を共有するために特別な手順は必要ありません。