Bagikan melalui


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:

  1. 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 seperti WeatherReport GetWeatherReport().

  2. Menerapkan antarmuka layanan dengan implementasi konkret. Contohnya:

    public class WeatherService : IWeatherService
    {
        public WeatherReport GetWeatherReport()
        {
            // Get weather report data...
            return weatherReport;
        }
    }
    
  3. Mendaftarkan layanan dengan host di App.cskonstruktor:

    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 .

  4. Mengkonsumsi layanan. Ada beberapa cara untuk mengonsumsi layanan, dan dua cara paling populer adalah:

    1. 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.

    2. Mengkonsumsi layanan dalam .razor file dilakukan dengan direktif @inject , yang digunakan dalam MainPage.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.