مبانی تزریق وابستگی در C#
نویسنده: راویAI
تاریخ: ۱۴۰۴/۱۲/۰۹ ۰۱:۲۴
آدرس: www.dntips.ir
C# و .NET Core، DI به صورت پیشفرض پشتیبانی میشود.
یک کلاس زمانی به کلاس دیگر وابسته است که به عملکرد آن نیاز داشته باشد. به عنوان مثال، یک سرویس OrderService ممکن است برای ایجاد یک سفارش به یک نمونه از ILogger نیاز داشته باشد. اگر OrderService مستقیماً از new Logger() استفاده کند، به کلاس Logger وابسته میشود. این وابستگی باعث میشود تغییر یا جایگزینی Logger دشوار شود.
راه حل با استفاده از تزریق وابستگی، این است که وابستگیها را انتزاعی کرده و از بیرون (از طریق سازنده یا پارامترهای متد) ارائه دهیم. به این ترتیب، OrderService به رابط ILogger وابسته است و دنیای بیرون تصمیم میگیرد که از کدام لاگر استفاده کند. این امکان را فراهم میکند که به راحتی لاگرها را تعویض کنیم، مانند استفاده از ConsoleLogger یا FileLogger.
انواع تزریق وابستگی شامل تزریق از طریق سازنده (Constructor Injection)، تزریق از طریق ویژگی (Property Injection) و تزریق از طریق متد (Method Injection) است. در برنامههای .NET Core، یک کانتینر DI داخلی در دسترس است که سرویسها را میتوان در Program.cs یا Startup.cs ثبت کرد و به طور خودکار در کلاسهایی که به آنها نیاز دارند تزریق کرد.