تزریق وابستگی به اکشن ها در ASP.NET Core
  در این نوشته به معرفی ویژگی تزریق وابستگی ها به شکل مستقیم به اکشن ها در ASP.NET Core می پردازیم
   ASP.NET MVC
   ۱۴۸۶۱
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۹۵/۱۰/۲۰
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

مقدمه:

به طور معمول وابستگی ها در سازنده کنترلر ها تزریق می گیرند و بدین شکل امکان استفاده از آن ها در تمامی اکشن ها مقدور می گردد. اما مواردی وجود دارند که ممکن است ترجیح دهیم که وابستگی به شکل مستقیم و به عنوان پارامتر به یک اکشن تزریق گردند. به طور مثال اگر یه سرویس فقط در یک اکشن خاص مورد استفاده می گیرد، ممکن است ترجیح دهیم که به شکل مستقیم و به عنوان پارامتر آن را به خود اکشن تزریق کنیم.

شروع:

این عمل در 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([FromServicesIService1 service)
    {
        return View();
    }
}


همانطور که مشاهده می کنید، این وابستگی به اکشن مورد نظر ما تزریق گردیده و آماده استفاده می باشد.