【发布时间】:2020-09-15 11:29:48
【问题描述】:
我有一个 .Net Core 游戏项目。在任何 API 中,我都想通过为其提供游戏名称(或 Id)来获得特定于游戏的服务。我目前有如下:
public GameServiceBase GetGameService(string gameName)
{
switch (gameName)
{
case GameNames.Keno:
return new KenoService();
case GameNames.BetOnPoker:
return new BetOnPokerService();
case GameNames.Minesweeper:
return new MinesweeperService();
default:
throw new Exception();
}
}
假设我们有更多的游戏服务,我只列出了一些,但你明白了。有没有更好的方法来获取服务而不是使用 switch 语句?也许使用依赖注入是可能的,但我不太清楚该怎么做。或者有某种设计模式可以做到这一点。
【问题讨论】:
-
对于初学者,您可以使用
Dictionary<string, GameService>(假设您的所有游戏服务都实现了接口 GameService)
标签: c# asp.net-core dependency-injection switch-statement