CodeShot
Dependency Injection1 دقیقه مطالعه

Dependency Injection چیست؟

به‌جای ساختن وابستگی‌ها داخل کلاس، آن‌ها را از بیرون به کلاس تزریق می‌کنیم.

چرا مهم است؟

DI باعث می‌شود کلاس‌ها به پیاده‌سازی‌های مشخص وابسته نباشند، تست‌پذیری بالا برود و تغییر یک وابستگی بدون دست‌کاری کلاس‌های دیگر ممکن شود.

تعریف یک‌خطی

به‌جای اینکه یک کلاس خودش وابستگی‌هایش را با new بسازد، آن وابستگی‌ها از بیرون (معمولاً از طریق سازنده) به آن داده می‌شوند.

مثال

// بدون DI
public class OrderService
{
    private readonly SqlOrderRepository _repository = new SqlOrderRepository();
}

// با DI
public class OrderService
{
    private readonly IOrderRepository _repository;
    public OrderService(IOrderRepository repository) => _repository = repository;
}

نکات مهم

  • وابستگی همیشه به یک Interface باشد، نه پیاده‌سازی مشخص.
  • طول عمر (Lifetime) را درست انتخاب کنید: Singleton، Scoped یا Transient.

اشتباهات رایج

❌ ساختن Container و Resolve کردن دستی وسط کد (Service Locator Anti-pattern). ✅ همیشه از طریق سازنده تزریق کنید.

خلاصه

DI یعنی وابستگی از بیرون داده شود، نه داخل کلاس ساخته شود. این کار تست‌پذیری و انعطاف کد را بالا می‌برد. طول عمر سرویس (Singleton/Scoped/Transient) را همیشه آگاهانه انتخاب کنید.

حالا امتحان کن

🧩آزمون Dependency Injection5 سؤال · نمره قبولی 60٪
این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←