Pozdrav!
Pokušavam shvatiti način na koji funkcionira Dependency Injection u .NET Core.
Dakle, imam jedan ASP.NET Core WebAPI projekt i imam Class Library projekt. CL projekt mi predstavlja DataAccess Layer gdje mi se nalazi EntityFrameworkCore veza s postojećom bazom podataka.
Također imam sučelje i klasu koja implementira to sučelje (IUserRepository, UserRepository).
Kod u Program.cs datoteci mi izgleda ovako:
builder.Services.AddDbContext<SocialNetworkContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Database")));
builder.Services.AddScoped<IUserRepository, UserRepository>();
I sad, ja koristim taj context u UserRepository klasi:
private readonly SocialNetworkContext _socialNetworkContext;
public UserRepository(SocialNetworkContext context)
{
_socialNetworkContext = context;
}
Nakon toga UserRepository klasu koristim u pripadajućem kontroleru:
private IUserRepository _userRepository;
public UsersController(IUserRepository userRepository)
{
this._userRepository = userRepository;
}
I API funkcionira. Kako je to moguće?
Nisam nigdje instancirao ni DbContext klasu, niti UserRepository klasu. Nemam nigdje definiranu vezu između DbContext i UserRepository klasa, nisam nigdje injectao DbContext objekt u UserRepository klasu, no program i dalje funkcionira kao da objekt postoji.
Ne shvaćam baš ovaj koncept, proguglao sam već par objašnjenja za Dependency Injection no dosta mi je šturo objašnjeno.

