小编Jon*_*ark的帖子

在 .NET Core 中实例化在其构造函数中使用依赖注入而不使用 new 的新对象

我一直在尝试掌握 .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呢?

c# dependency-injection .net-core

8
推荐指数
1
解决办法
2736
查看次数

标签 统计

.net-core ×1

c# ×1

dependency-injection ×1