'Resolving Dependencies based on request in Servicestack
I have a Servicestack Api and i need suggestions \ ideas in injection the dependencies.
My Api needs to call appropriate dependency based on the request parameters
I have registered the dependencies as below
public class AppHost : AppHostBase
{
//default code
public override void Configure(Container container)
{
container.Register<ITravelManager>("Air", new AirTravelManager());
container.Register<ITravelManager>("Road", new RoadTravelManager());
}
}
The service looks as :
public class TravelService:Service
{
private readonly ITravelManager traveleManager;
public TravelService(ILogService logService)
{
}
public TravelByAir Post(TravelByAirReq request)
{
traveleManager= ServiceStackHost.Instance.Container.ResolveNamed<ITravelManager >("Air");
traveleManager.BooKTickets();
}
public TravelByRoad Post(TravelByRoadReq request)
{
traveleManager= ServiceStackHost.Instance.Container.ResolveNamed<ITravelManager >("Road");
traveleManager.BooKTickets()
}
}
My manager class looks as
public interface ITravelServiceManager
{
Tickets BooKTickets();
}
public class AirTravelManager
{
Tickets BooKTickets()
{
....
}
}
public class SeaTravelManager
{
Tickets BooKTickets()
{
....
}
}
Resolving traveleManager this way , looks like anti-pattern.
Is there better approach \ pattern to resolve traveleManager with out using service locator.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
