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

Место общения программистов 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

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