[英]Unable to resolve base class service
嘗試激活Controller
由於未正確注入服務,我收到以下錯誤:
System.InvalidOperationException: '嘗試激活'AnubisServer.DroneController' 時無法解析類型'AnubisServer.Server.IDroneOperations' 的服務。
我有以下層次結構:
public interface IOperations { }
public interface ICatalog : IOperations { }
public interface IAdmin : ICatalog { }
public interface ICatalogService : IAdmin, ISomethingElse { }
在我的啟動中,我為最派生的接口ICatalogService
提供了一個具體的實現:
啟動
public void ConfigureServices(IServiceCollection services) {
services.AddMvc();
ICatalogService catalogService = new SomeConcreteService();
services.AddSingleton(catalogService);
}
控制器
public class CatalogController:Controller
{
private IOperations operations;
public CatalogController(IOperations ops)
{
this.operations=ops;
}
}
所以我不明白為什么注入基類接口不起作用,因為我提供了一個派生的具體實例。
有任何想法嗎?
IServiceCollection
中的注冊是鍵值對,其中服務(或抽象)是鍵,組件(或實現)是值。 將根據該確切鍵進行查找。 所以在你的情況下,你只注冊了ICatalogService
,而不是IOperations
。 這意味着無法解析IOperations
。 您必須明確注冊IOperations
。 例如:
services.AddSingleton<IOperations>(catalogService);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.