нужно в качестве зависимисти получить массив всех классов имплементирующих некий открытый интерфейс, то это только самому руками сборку перебирать.. или есть тайные конфу?
Так Reflection же?..
есть и тайные конфу без рефлексии Если объявить джинерик интерфейс + добавить реализаций public interface IYourInterface<T> where T : class {....................} public class YourInterfaceInheritor<T> : IYourInterface<T> where T : class {............} то в ConfigureServices можно вот так объявить (не обязательно синглтон, просто для примера) services.AddSingleton(typeof(IYourInterface<>), typeof(YourInterfaceInheritor<>));
Увы, типы реализующие интерфейс у меня не открытые: SomeClass: ISomeInterface<ContcreteType> а записи типа services.AddTransient(typeof(ISomeInterface<>), typeof(SomeClass)); или services.AddTransient(typeof(ISomeInterface<>)); не прокатывают, уж очень привередливый этот DI
services.AddTransient(typeof(ISomeInterface<ContcreteType>)); не прокатит? или у тебя куча конкретных типов?
Увы, эксепшен, помогло services.AddTransient(typeof(ISomeInterface<ContcreteType>, typeof(SomeClass)); Но есть одно "но", там где по идее он должен прислать пустой массив, он бросает эксепшен, что не смог разрезольвить зависимость
Обсуждают сегодня