依存関係の挿入
重要
このプロジェクトは実験的なリリースです。 試験的なモバイル Blazor バインディングを試して、で https://github.com/xamarin/MobileBlazorBindingsフィードバックを提供することを願っています。
依存関係の挿入をアプリケーションに組み込むには、いくつかの手順が必要です。
サービスの クラスのインターフェイスを定義する。 天気予報アプリのサンプルでは、アプリの単純な性質によりインターフェイス定義が前述されていますが、それ以外の場合は、 などの
WeatherReport GetWeatherReport()
メソッドを使用して という名前IWeatherService
のインターフェイスを持つことになります。具象実装を使用したサービス インターフェイスの実装。 次に例を示します。
public class WeatherService : IWeatherService { public WeatherReport GetWeatherReport() { // Get weather report data... return weatherReport; } }
のコンストラクターで
App.cs
ホストにサービスを登録します。var host = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { // Register app-specific services services.AddSingleton<IWeatherService, WeatherService>(); }) .Build();
クラスでは、サービスのいくつかの登録メソッドを
ServiceCollectionServiceExtensions
使用できます。サービスの使用。 サービスを使用する方法はいくつかありますが、最も一般的な方法の 2 つを次に示します。
カスタム型のコンストラクターの挿入も依存関係挿入コンテナーに登録されます。 この方法でサービスを使用するには、サービスを使用するクラスにコンストラクター パラメーターを追加します。そのクラスが DI コンテナーから取得されると、そのパラメーターに DI コンテナーから他のサービスが設定されます。
ファイル内のサービスの
.razor
使用は、 ファイルで@inject
使用される ディレクティブを使用してMainPage.razor
行われます。@inject WeatherService WeatherService
ディレクティブの詳細については、
@inject
Blazor のドキュメントを参照してください。
ヒント
ハイブリッド アプリでは、アプリのネイティブ UI、アプリの Web パーツ、およびその他の場所の間でサービスが共有されます。 ハイブリッド アプリの領域間でサービスと状態を共有するために特別な手順は必要ありません。