Я работаю над рефакторингом некоторого кода. Я обнаружил, что один из моих коллег по команде создал такой интерфейс:
public interface IConfiguration<T>
{
string Url { get; }
string Password { get; }
}
Этот параметр T кажется избыточным, но затем я обнаружил, что он фактически используется в конфигурации внедрения зависимостей (это ASP . NET приложение ядра 2.2), вот так:
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services
.AddSingleton<IConfiguration<Person>, PersonConfiguration>()
.AddSingleton<IConfiguration<Product>, ProductConfiguration>()
.AddSingleton<IConfiguration<Order>, OrderConfiguration>()
}
Я не знаю почему, но я испытываю сильное отвращение к этому подходу. Может ли кто-нибудь предложить для этого более чистый дизайн (соответствующий принципам SOLID)?