Я хотел был бы иметь возможность зарегистрировать 2 класс для того же интерфейса в моем контейнере Unity. Затем я хотел бы выбрать текущую реализацию на основе параметра.Web Api and Unity IoC
Вот мой интерфейс:
public interface ICheckService
{
HttpResponseMessage Validate(string p1, string p2);
}
}
Мои услуги:
public class CheckService1 : ICheckService
{
public HttpResponseMessage Validate(string p1, string p2)
{
/////code
}
}
public class CheckService2 : ICheckService
{
public HttpResponseMessage Validate(string p1, string p2)
{
////code
}
}
В bootstraper.cs я объявляю свои услуги:
`container.RegisterType<ICheckService, CheckService1>();`
`container.RegisterType<ICheckService, CheckService2>();`
Мой контроллер API:
public class ServiceController : ApiController
{
private readonly ICheckService _checkService;
public ServiceController(ICheckService checkService)
{
_checkService = checkService;
}
[HttpGet]
public HttpResponseMessage Validate(string p1, string p2)
{
return _checkService.Validate(p1, p2);
}
}
Теперь я хотел бы, когда я закрою свой api, выбрать реализацию на основе параметра p1.
Если p1 равно Сервису 1, то метод Validate вызывается из класса Service1, а если p1 равно Service2, метод validate вызывается из класса Service2.
Благодарим за помощь.