Saya memiliki metode ekstensi yang menggunakan IHtmlHelper, seperti ini:

public static HtmlString HelpContext(this IHtmlHelper helper)
{
    return "";
}

Fungsi ini kemudian dipanggil dari halaman Razor.

Saya memiliki pengaturan yang dimuat di startup saya, dan siap untuk diakses melalui injeksi ketergantungan. Bagaimana saya melakukan ini, tanpa membuat kelas pengaturan statis? Apakah mungkin melakukan injeksi metode di sini, tanpa harus menyuntikkan pengaturan dari halaman pada setiap panggilan?

1
WynDiesel 1 Juli 2020, 17:29

1 menjawab

Jawaban Terbaik

Berdasarkan sifat statis dari kode yang diakses, pendekatan pencari lokasi layanan perlu diterapkan.

Selesaikan jenis yang diinginkan melalui IHtmlHelper.ViewContext, yang memiliki akses ke HttpContext. Mengizinkan akses ke IServiceProvider melalui HttpContext.RequestServices

public static HtmlString HelpContext(this IHtmlHelper helper) {

    IServiceProvider services = helper.ViewContext.HttpContext.RequestServices;

    var x = services.GetRequiredService<IMyType>();

    //...
    
}
1
Nkosi 1 Juli 2020, 15:39