asp.net-core - Asp.Net Core 没有注册类型的服务

标签 asp.net-core dependency-injection

我有以下两个类(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/

相关文章:

java - Spring DI 在运行时而不是编译时解决依赖的优点在基于 Java 的配置中丢失了吗?

asp.net-core - IdentityServer4如何处理returnUrl

asp.net-core - 删除继承的ASP.NET Core应用程序设置

iis - 在 IIS 中运行时,AspNet Core 使用内存存储库进行数据保护

.net - 通过 web.config 对 WCF 服务的 Unity 依赖注入(inject)

.net - 避免违反复用抽象原则

visual-studio-2015 - 从 ASP.NET vNext beta5 迁移到 beta7 后,JWT 承载 token 身份验证错误

c# - 找不到方法 : 'Boolean Microsoft. IdentityModel.Tokens.TokenUtilities.IsRecoverableConfiguration

unit-testing - 摆脱子组件对象的 'new' 运算符

javascript - 如何使用 AngularJS 和 RequireJS 从外部文件注入(inject)服务?