У меня есть несколько конкретных реализаций на одном интерфейсе.Я зарегистрировал это в DI ядра ASP.NET, как показано ниже
services.AddTransient<EmailService>();
services.AddTransient<SmsService>();
services.AddTransient<Func<MessageType, IMessageService>>(serviceProvider => key =>
{
switch (key)
{
case MessageType.Email:
return serviceProvider.GetService<EmailService>();
case MessageType.Sms:
return serviceProvider.GetService<SmsService>();
default:
throw new KeyNotFoundException();
}
});
, затем я вставляю Func<MessageType, IMessageService> serviceAccessor
в конструктор
, когда я запрашиваю конкретную реализацию serviceAccessor(MessageType.Sms)
, выдает исключение
Активированное время Продолжительность события Исключение потока: «System.ObjectDisposedException» в Microsoft.Extensions.DependencyInjection.dll («Не удается получить доступ к удаленному объекту.») Возникло исключение: «System.ObjectDisposedException» в Microsoft.Extensions.DependencyInjection.dll («Не удается получить доступ к удаленному объекту.») Гиперссылка: активировать хроническую отладку 8.97s [428] WorkPool-Session # 2: соединение (3a5aaef7-e40f-4607-9d12-eacbd0dd5f6d, amqp: // localhost: 5672)
в чем проблема?