Получите все реализации данного типа из IServiceProvider независимо от того, имеют ли они ключ или нет.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получите все реализации данного типа из IServiceProvider независимо от того, имеют ли они ключ или нет.

Сообщение Anonymous »

ПОЧЕМУ ЭТО НЕ ДУБЛИКАТ
НЕ ПУТАТЬ С «КАК МНЕ ПОЛУЧИТЬ КЛЮЧ И ТИП ИЗ КЛЮЧЕВЫХ СЕРВИСОВ», этот вопрос говорит только о как получить все типы с ключами, возможно, это часть ответа, но не говорится о типах без ключей и о том, как их учитывать, поскольку кто-то, кто потратил много времени на поиск в 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.
Я подумал, возможно, мне придется использовать serviceProvider.GetKeyedServices() но, к сожалению, для этого требуется предоставить ключ, и в этом случае мы хотим игнорировать ввод ключей и просто получить все реализации данного типа.
Так может ли кто-нибудь посоветовать, как получить ожидаемое поведение? даже если для этого требуется объединение двух методов поставщика услуг.

Подробнее здесь: https://stackoverflow.com/questions/782 ... ss-of-if-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»