Для .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
Запрет на несколько реализаций службы в коллекции обслуживания .NET Generic Host Host ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение