'Executing code depending on parameter in controller
So I have this controller code, with dependency injection setup
private IManager manager
public Controller(IManager manager)
{
this.manager = manager
}
Task async GetAsync(string appId)
{
await manager.ProcessAsync(appId)
}
Depending on the appid information should be queried from subsystems, so instead of making 1 big manager with a huge switch/case block I would like to create a manager implementation for each subsystem.
What I thought I could do is making an abstract manager class from which the subsystem managers would derive
public interface IManager
{
Task ProcessAsync(string appId)
}
public abstract class Manager : IManager
{
public virtual Task ProcessAsync(string appId)
}
public class ManagerA : Manager
{
public override Task ProcessAsync(string appId)
}
public class ManagerB : Manager
{
public override Task ProcessAsync(string appId)
}
How can I setup the code (and dependency injection) so my controller calls the right manager depending on the appId parameter? Kind of
Task async GetAsync(string appId)
{
switch (appId)
{
case AppA:
managerA.ProcessAsync(appId)
break;
case AppB:
managerB.ProcessAsync(appId)
break;
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
