I have a strange problem with the NET core dependency injection. When I'm trying to register a service, InsufficientExecutionStackException exception is thrown. What does this mean in this context? This is how I register the services (third line throws the exception):
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>();
Two services are injected in UserService class. These are the constructors of those:
public UserService(IUserRepository userRepository, string secret, IAchievementService achievementService)
{
this.achievementService = achievementService;
this.userRepository = userRepository;
this.secret = secret;
}
UserRepository:
public UserRepository(IDatabaseService databaseService)
{
this.databaseService = databaseService;
}
AchievementService:
public AchievementService(IAchievementRepository achievementRepository, IUserService userService)
{
this.achievementRepository = achievementRepository;
this.userService = userService;
this.userRequestService = userRequestService;
}
Another strange thing is that if I click "View details" from the Exception windows (I'm using Visual studio 2019) the debugger crashed and doesn't show anything.