DI - Property Injection
Existe a possibilidade de usar DI diretamente na passagem de params em uma function. Mas isso não é indicado porque é ruim de testar. Estou salvando aqui porque pode haver alguma situação onde eu não vou conseguir fazer DI via construtor.
// Repository.cs
public interface IRepository
{
public void Save();
}
public class Repository : IRepository
{
public void Save()
{ /* codigo */ }
}
// Program.cs
builder.Services.AddRazorPages();
builder.Services.AddScoped<IRepository, Repository>();
// Controller.cs
public class Controller
{
// aqui estamos recebendo direto do services da app
public void Metodo([FromServices] IRepository repository)
{
repository.Save();
}
}