НЕ ПУТАТЬ С «КАК МНЕ ПОЛУЧИТЬ КЛЮЧ И ТИП ИЗ КЛЮЧЕВЫХ СЕРВИСОВ», этот вопрос говорит только о как получить все типы с ключами, возможно, это часть ответа, но не говорится о типах без ключей и о том, как их учитывать, поскольку кто-то, кто потратил много времени на поиск в Google этого, уже ответы на этот вопрос не отвечают на вопрос здесь, и для целей поиска этот вопрос гораздо более конкретен, чем этот, который представляет собой гораздо более высокий уровень «ВСЕ РЕАЛИЗАЦИИ», а не просто «РЕАЛИЗАЦИИ С КЛЮЧАМИ», как запрошено там.
АКТУАЛЬНЫЙ ВОПРОС
Похоже, что начиная с .net 8 Microsoft добавила возможность иметь службы с ключами, что кажется замечательным, но я заметил это призвание serviceProvider.GetServices(typeof(SomeInterface)); не будет возвращать экземпляры, которые также содержат ключевую информацию.
Например:
Код: Выделить всё
var collection = new ServiceCollection();
collection.AddKeyedSingleton("test1");
collection.AddKeyedSingleton("test2");
collection.AddSingleton();
var serviceProvider = collection.BuildServiceProvider();
var implementations = serviceProvider.GetServices();
Assert.NotNull(implementations);
Assert.NotEmpty(implementations);
// Expecting TestClass1, TestClass2, TestClass3
Assert.True(implementations.Count() == 3);
// Actually just TestClass3
Я подумал, возможно, мне придется использовать serviceProvider.GetKeyedServices() но, к сожалению, для этого требуется предоставить ключ, и в этом случае мы хотим игнорировать ввод ключей и просто получить все реализации данного типа.
Так может ли кто-нибудь посоветовать, как получить ожидаемое поведение? даже если для этого требуется объединение двух методов поставщика услуг.
Подробнее здесь: https://stackoverflow.com/questions/782 ... ss-of-if-t