меня есть варианты получить тот шо я хочу через ди? Возможно даже не самые старндартные решения
Погугли есть множество вариантов, самое элегентное решение ИМХО это сделать женерик интерфейс, и регистрировать/резолвить IService<TImpl1> IService<TImpl2>
у меня будет такая штука и я в контролелр фактори хочу возвращать нужный контроллер
Плюсик, только я бы не тип сервиса в дженерик совал, а какую нибудь модель, например
Ну вот и сделай там типо IBaseUserController<T>, например IBaseUserController<City>
Ну да, я имел в виду что-нибудь что сможет идентифицировать сервис, сам класс реализацию прокидывать неоч идея)
Есть вариант с "фабрикой" (я с памяти накидал, чтобы саму идею передать) services.AddTransient<IBaseUserController, BaseEntityController<..., ..., ...>>(); services.AddTransient<IBaseUserController, BaseEntityController<..., ..., ...>>(); services.AddTransient<IBaseUserController, BaseEntityController<..., ..., ...>>(); services.AddTransient<Func<Type, IBaseUserController>>(provider => { return type => { var controllers = provider.GetServices(typeof(IBaseUserController)).Cast<IBaseUserController>().ToArray(); return controllers.FirstOrDefault(c => c.GetType() == type); }; });
Но эта идея мне больше нравится
Сделай интерфейс ещё один
Обсуждают сегодня