Запрет на несколько реализаций службы в коллекции обслуживания .NET Generic Host HostC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Запрет на несколько реализаций службы в коллекции обслуживания .NET Generic Host Host

Сообщение Anonymous »

Для .NET Generic Host можно зарегистрировать несколько реализаций того же сервисного интерфейса. При материализации этой службы получено последнее добавление (это правильно даже для нескольких реализаций, зарегистрированных в том же ключе): < /p>
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Threading.Tasks;

namespace IHostTest;

internal class Program
{
static async Task Main()
{
var hostBuilder = Host.CreateDefaultBuilder().ConfigureServices(services =>
{
services.AddSingleton();
services.AddSingleton();

services.AddKeyedSingleton("key");
services.AddKeyedSingleton("key");
});
var host = hostBuilder.Build();
//will get SomeService2 here
var service = host.Services.GetRequiredService();
//will also get SomeService2 here
var keyedService = host.Services.GetRequiredKeyedService("key");

await host.RunAsync();
}
}

internal interface ISomeService
{ }

internal class SomeService1 : ISomeService
{ }

internal class SomeService2 : ISomeService
{ }
< /code>
Есть ли способ запретить реализации нескольких услуг? Мне нужно получить исключение при создании моего хозяина в этом случае. Или обнаружение такой ситуации с помощью модульных тестов - единственный вариант?

Подробнее здесь: https://stackoverflow.com/questions/796 ... collection
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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