Study
Blazor

Dependency Injection dengan @inject

Penjelasan

@inject TipeService namaVariabel di bagian atas file .razor otomatis menyuntikkan instance Service terdaftar (didaftarkan lewat builder.Services di Program.cs) — setara constructor injection di Symfony/NestJS, tapi diringkas jadi satu baris directive khusus Razor.

Contoh Konsep

@* HargaService.cs *@
@* public class HargaService
{
    public decimal HitungDenganPajak(decimal harga) => harga * 1.11m;
} *@

@* Program.cs: builder.Services.AddScoped<HargaService>(); *@

@* KomponenHarga.razor *@
@inject HargaService HargaService

<p>Total: @HargaService.HitungDenganPajak(100000)</p>

Praktikum

Buat class DiskonService dengan method Hitung(decimal harga, decimal persenDiskon) yang mengembalikan harga setelah dikurangi diskon. Tulis contoh component .razor yang meng-inject DiskonService lewat @inject dan memakainya.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Service HARUS didaftarkan dulu di Program.cs lewat builder.Services.AddScoped<T>()/AddSingleton<T>()/AddTransient<T>() SEBELUM bisa di-@inject di component mana pun — lupa mendaftarkannya membuat Blazor error "Cannot provide a value for property" saat aplikasi dijalankan.