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