DI - Registro de Generics
Caso seja mais interessante a criação de classes genéricas (que usam polimorfismo paramétrico) ainda assim podemos fazer uso da injeção de dependência por meio de um container.
public interface IRepositoryGeneric<T> where T : class
{
public void Save();
}
public class RepositoryGeneric<T> : IRepositoryGeneric<T> where T : class
{
public void Save()
{ /* codigo */ }
}
No Program.cs vamos colocar desse modo.
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddScoped(
typeof(IRepositoryGeneric<>), typeof(RepositoryGeneric<>)
);
var app = builder.Build();
O resto segue igual.