An open generic is a type definition with one or more unspecified generic parameters, such as Repository<T>. It defines reusable behavior for multiple closed generic types. section 9.2
In dependency injection, register open generics with the non-generic Add* overload. The container can then match IRepository<Customer> with DbRepository<Customer> when constructing a service. section 9.2
Registering an open generic
builder.Services.AddScoped(typeof(IRepository<>), typeof(DbRepository<>));
public record EmailServerSettings(string Host, int Port);
Compare the open-generic registration with ordinary generic registration methods, which cannot register open generics. section 9.2
