gpt4 book ai didi

c# - 无法解析基类服务

转载 作者:行者123 更新时间:2023-12-05 03:01:01 25 4
gpt4 key购买 nike

尝试激活 Controller 时,由于未正确注入(inject)服务,出现以下错误:

System.InvalidOperationException: 'Unable to resolve service for type 'AnubisServer.Server.IDroneOperations' while attempting to activate 'AnubisServer.DroneController'.'

我有以下层次结构:

public interface IOperations { }
public interface ICatalog : IOperations { }
public interface IAdmin : ICatalog { }
public interface ICatalogService : IAdmin, ISomethingElse { }

在我的初创公司中,我为最派生的接口(interface) ICatalogService 提供了一个具体实现:

启动

public void ConfigureServices(IServiceCollection services) {
services.AddMvc();
ICatalogService catalogService = new SomeConcreteService();
services.AddSingleton(catalogService);
}

Controller

public class CatalogController:Controller
{
private IOperations operations;
public CatalogController(IOperations ops)
{
this.operations=ops;
}
}

所以我不明白为什么注入(inject)基类接口(interface)不起作用,因为我提供的是派生的具体实例。

有什么想法吗?

最佳答案

IServiceCollection 中的注册是键值对,其中服务(或抽象)是,组件(或实现)是值。查找将基于该确切的键完成。因此,在您的情况下,您注册了ICatalogService没有IOperations。这意味着无法解析 IOperations。您必须显式注册 IOperations。例如:

services.AddSingleton<IOperations>(catalogService);

关于c# - 无法解析基类服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56252130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com