【发布时间】:2020-09-13 15:39:48
【问题描述】:
NET 核心依赖注入有一个奇怪的问题。当我尝试注册服务时,会引发 InsufficientExecutionStackException 异常。在这种情况下,这意味着什么?这就是我注册服务的方式(第三行抛出异常):
var connectionStr = Configuration.GetValue<string>("databaseConnectionString");
services.AddSingleton<IDatabaseService>(s => new MySqlDatabaseService(connectionStr));
services.AddSingleton<IUserService>(s => new UserService(s.GetRequiredService<IUserRepository>(), secret, s.GetRequiredService<IAchievementService>()));//this line throws the exception
services.AddSingleton<IAchievementService, AchievementService>();
services.AddSingleton<IUserRepository, UserRepository>();
services.AddSingleton<IAchievementRepository, AchievementRepository>();
services.AddSingleton<IUserRequestService, UserRequestService>();
services.AddSingleton<AppSettingsService>();
在 UserService 类中注入了两个服务。这些是那些的构造函数:
public UserService(IUserRepository userRepository, string secret, IAchievementService achievementService)
{
this.achievementService = achievementService;
this.userRepository = userRepository;
this.secret = secret;
}
用户存储库:
public UserRepository(IDatabaseService databaseService)
{
this.databaseService = databaseService;
}
成就服务:
public AchievementService(IAchievementRepository achievementRepository, IUserService userService)
{
this.achievementRepository = achievementRepository;
this.userService = userService;
this.userRequestService = userRequestService;
}
另一个奇怪的事情是,如果我从异常窗口(我使用的是 Visual Studio 2019)中单击“查看详细信息”,调试器就会崩溃并且不显示任何内容。
【问题讨论】:
标签: c# asp.net-core dependency-injection