尝试激活Controller
时,由于未正确注入服务而出现以下错误:
System.InvalidOperationException:'无法解析类型的服务 尝试激活时为“ AnubisServer.Server.IDroneOperations” “ AnubisServer.DroneController”。
我具有以下等级:
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;
}
}
所以我不明白为什么由于我提供了派生的具体实例而无法注入基类接口。
有什么想法吗?
答案 0 :(得分:1)
IServiceCollection
中的注册是键值对,其中服务(或抽象)是 key ,而组件(或实现)是值。查找将基于该确切键进行。因此,根据您的情况,您仅注册了ICatalogService
,而没有注册了IOperations
。这意味着IOperations
无法解析。您将必须明确注册IOperations
。