У меня проблема. net ядро, которое мне нужно для разрешения зависимости на основе значения, которое я получаю от API.
Интерфейс
public interface IBookingSettingsDetails
{
void GetSettings();
}
Класс A
public class ScheduleSettingsA: IBookingSettingsDetails
{
public void GetSettings() {}
}
Класс B
public class ScheduleSettingsB: IBookingSettingsDetails
{
public void GetSettings() {}
}
Резолвер в файле startup.cs -
services.AddTransient<Func<int, IBookingSettingsDetails>>(serviceProvider => conferencingType =>
{
switch (conferencingType)
{
case 1:
return serviceProvider.GetService<ScheduleSettings>();
case 2:
return serviceProvider.GetService<WebexSettings>();
default:
throw new InvalidOperationException();
}
});
Всякий раз, когда я пытаюсь разрешить зависимость от контроллера, я всегда получаю null в преобразователе.
public class VideoConferenceController : ControllerBase
{
private readonly Func<int, IBookingSettingsDetails> _serviceAccessor;
public VideoConferenceController(Func<int, IBookingSettingsDetails> serviceAccessor)
{
_serviceAccessor = serviceAccessor;
}
[HttpGet]
[Route("getRandom")]
public void getRandom(int conferenceType)
{
var service= _serviceAccessor(conferenceType);
service.GetSettings();
}
}
Я хочу разрешить зависимость на основе параметра, указанного в функции. Я не хочу использовать какие-либо сторонние библиотеки, такие как Unity. Можно ли это сделать, используя описанный выше подход?