我一直在尝试掌握 .NET Core 中依赖注入的概念,但遇到了问题。我想我在某处遗漏了要点。
举个例子,假设我有一个顶级GameHandler类,然后是一个Game类和一个ScoreCard类。
我的Game类依赖于ScoreCard类,并且需要将其注册为临时服务,因为每个新游戏都需要一个新的记分卡。我可以通过这样做来实现这一目标......
public class Game
{
private readonly IScoreCard _scoreCard;
public Game(IScoreCard scoreCard)
{
_scoreCard = scoreCard;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在startup.cs中的ConfigureServices方法中注册服务
services.AddTransient<IScoreCard, ScoreCard>();
Run Code Online (Sandbox Code Playgroud)
这一切都很好,这是一个简单的一对一关系,其中Game类需要ScoreCard类的单个实例。
我的GameHandler类也依赖于Game类。然而,在这种情况下,我希望可能有多个游戏,可能与密钥一起存储在某种字典中。而且我不知道需要多少个,因为这取决于谁在特定时间玩游戏,所以我需要在需要时创建新的游戏对象。
如果我尝试使用new来执行此操作,就像这样
Game _newGame = new Game();
Run Code Online (Sandbox Code Playgroud)
它显然不起作用,因为我的游戏构造函数现在有 DI 记分卡内容,并且不匹配。那么如何使用 DI 创建 Game 的新实例而不使用new呢?