.NET Core MVC 应用中控制器依赖注入失败的解决方法
在您的 .NET Core MVC 应用中,尝试将 BloggerRepository
注入 BlogController
时出现错误,提示信息如下:
<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
让我们分析代码来理解这个错误:
仓储层:
<code>public interface IBloggerRepository { ... } public class BloggerRepository : IBloggerRepository { ... }</code>
控制器:
<code>public class BlogController : Controller { private readonly IBloggerRepository _repository; public BlogController(BloggerRepository repository) { ... } }</code>
Startup.cs:
<code>services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
错误表明依赖注入系统无法为 BlogController
构造函数提供 BloggerRepository
实例。
问题在于控制器期望 BloggerRepository
的具体类,而依赖注入容器却被告知将接口 IBloggerRepository
与具体实现注册。
解决方案:
为了解决这个问题,修改控制器的构造函数,使其接受接口而不是具体类:
<code>public BlogController(IBloggerRepository repository) { ... }</code>
通过这种修改,依赖注入容器现在可以成功解析依赖项并提供 IBloggerRepository
的实例,该实例将自动实例化为 BloggerRepository
。
注意: 不同的包可能有其自己的服务注册方式。建议始终查阅其文档以获取具体的指导。
以上是为什么我的 .NET Core MVC 应用程序无法将注册的服务注入控制器?的详细内容。更多信息请关注PHP中文网其他相关文章!