我有以下两个课程
public class RepositoryConnection : IRepositoryConnection{
public RepositoryConnection(IConfiguration configuration, ILogger<RepositoryConnection> logger){
//STUFF
}
}
public class AuthenticationTokenFactory : IAuthenticationTokenFactory {
public AuthenticationTokenFactory(ILogger<AuthenticationTokenFactory> logger) {
//STUFF
}
}
这是我的Startup.cs
public class Startup {
public Startup(IConfiguration configuration) {
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services) {
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSingleton<IAuthenticationTokenFactory, AuthenticationTokenFactory>();
services.AddSingleton<IRepositoryConnection,RepositoryConnection>();
}
}
我可以成功地将IAuthenticationTokenFactory
注入控制器,但是当我尝试注入IRepositoryConnection
时出现以下错误→
InvalidOperationException:没有为类型“ TrainingCommerce.Accessors.RepositoryConnection”注册任何服务。
由于发表评论,我立即注意到了我的错误做法。 我试图在另一行访问
var debug = ControllerContext.HttpContext.RequestServices.GetRequiredService<RepositoryConnection>();
答案 0 :(得分:0)
尝试注入接口而不是实现:
在您的样本中,您注入ILogger<RepositoryConnection> logger
是一个错字,应该是:ILogger<IRepositoryConnection> logger
。
所以:
public class RepositoryConnection : IRepositoryConnection{
public RepositoryConnection(IConfiguration configuration, ILogger<IRepositoryConnection> logger){
//STUFF
}
}