.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中文網其他相關文章!