مقدمه:
به طور معمول وابستگی ها در سازنده کنترلر ها تزریق می گیرند و بدین شکل امکان
استفاده از آن ها در تمامی اکشن ها مقدور می گردد. اما مواردی وجود دارند که ممکن
است ترجیح دهیم که وابستگی به شکل مستقیم و به عنوان پارامتر به یک اکشن تزریق
گردند. به طور مثال اگر یه سرویس فقط در یک اکشن خاص مورد استفاده می گیرد، ممکن
است ترجیح دهیم که به شکل مستقیم و به عنوان پارامتر آن را به خود اکشن تزریق کنیم.
شروع:
این عمل در ASP.NET Core با استفاده از خاصیت [FromServices] امکان پذیر می باشد.
تصور کنید قرار است سرویسی با نام Service1 را به یک اکشن به شکل پارامتر
تزریق نماییم. ابتدا باید اینترفیس و کلاسی که این اینترفیس را پیاده سازی نموده
است را در متد ConfigureServices در کلاس Startup.cs ثبت نماییم تا امکان تزریق این
وابستگی در سرتاسر برنامه فراهم گردد.
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient(typeof(IService1), typeof(Service1));
services.AddMvc();
}
هم اکنون این وابستگی را در اکشن Index به شکل زیر و با استفاده از خاصیت [FromServices] تزریق می نماییم:
public class HomeController : Controller
{
public IActionResult Index([FromServices] IService1 service)
{
return View();
}
}
همانطور که مشاهده می کنید، این وابستگی به اکشن مورد نظر ما تزریق گردیده و
آماده استفاده می باشد.