我有以下两个类(class)
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>();
}
}
我可以成功注入(inject)
IAuthenticationTokenFactory
到 Controller ,但是当我尝试注入(inject) IRepositoryConnection
我收到以下错误→InvalidOperationException: No service for type 'TrainingCommerce.Accessors.RepositoryConnection' has been registered.
感谢评论,我立即注意到我的错误方式。
我试图在另一条线路上访问
var debug = ControllerContext.HttpContext.RequestServices.GetRequiredService<RepositoryConnection>();
最佳答案
尝试注入(inject)接口(interface)而不是实现:
在您的 sample 中注入(inject) ILogger<RepositoryConnection> logger
这是一个错字,应该是:ILogger<IRepositoryConnection> logger
.
所以:
public class RepositoryConnection : IRepositoryConnection{
public RepositoryConnection(IConfiguration configuration, ILogger<IRepositoryConnection> logger){
//STUFF
}
}
关于asp.net-core - Asp.Net Core 没有注册类型的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51962130/