CodeShot

Interface در مقابل Dependency Injection

Interface قرارداد تعریف می‌کند، اما Dependency Injection نحوه ارائه وابستگی‌ها را مدیریت می‌کند.

ویژگیInterfaceDependency Injection
هدفتعریف قراردادساخت و تزریق Object
اجراCompile TimeRuntime
جایگزینی Dependencyکمک می‌کندانجام می‌دهد
وابستگیکم می‌کندمدیریت می‌کند

کِی از Interface استفاده کنیم؟

برای کاهش وابستگی مستقیم بین کلاس‌ها.

کِی از Dependency Injection استفاده کنیم؟

برای مدیریت Lifecycle و ساخت Objectها.

مثال Interface

public interface ILoggerService { void Log(string message); }

مثال Dependency Injection

builder.Services .AddScoped<ILoggerService, LoggerService>();

اشتباه رایج

فکر کردن اینکه Interface خودش Dependency Injection است.

جمع‌بندی

Interface = قرارداد

DI = مدیریت وابستگی