Injeksi Dependensi
Penting
Proyek ini adalah rilis eksperimental. Kami harap Anda mencoba Experimental Mobile Blazor Bindings dan memberikan umpan balik di https://github.com/xamarin/MobileBlazorBindings.
Memasukkan injeksi dependensi ke dalam aplikasi melibatkan beberapa langkah:
Menentukan antarmuka kelas untuk layanan. Contoh aplikasi cuaca definisi antarmuka foregoes karena sifat aplikasi yang sederhana, tetapi sebaliknya akan memiliki antarmuka yang dinamai
IWeatherService
dengan metode di atasnya sepertiWeatherReport GetWeatherReport()
.Menerapkan antarmuka layanan dengan implementasi konkret. Contohnya:
public class WeatherService : IWeatherService { public WeatherReport GetWeatherReport() { // Get weather report data... return weatherReport; } }
Mendaftarkan layanan dengan host di
App.cs
konstruktor:var host = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { // Register app-specific services services.AddSingleton<IWeatherService, WeatherService>(); }) .Build();
Beberapa metode pendaftaran untuk layanan tersedia di
ServiceCollectionServiceExtensions
kelas .Mengkonsumsi layanan. Ada beberapa cara untuk mengonsumsi layanan, dan dua cara paling populer adalah:
Injeksi konstruktor dalam jenis kustom juga terdaftar dalam kontainer injeksi dependensi. Untuk menggunakan layanan dengan cara ini, tambahkan parameter konstruktor ke kelas Anda yang menggunakan layanan, dan ketika kelas tersebut diambil dari kontainer DI, itu akan memiliki parameternya yang diisi dengan layanan lain dari kontainer DI.
Mengkonsumsi layanan dalam
.razor
file dilakukan dengan direktif@inject
, yang digunakan dalamMainPage.razor
file:@inject WeatherService WeatherService
Pelajari selengkapnya tentang arahan
@inject
dalam dokumentasi Blazor.
Tip
Di aplikasi hibrid, layanan dibagikan antara antarmuka pengguna asli aplikasi, bagian web aplikasi, dan di tempat lain. Tidak ada langkah khusus yang diperlukan untuk berbagi layanan dan status antara area aplikasi hibrid.