簡體   English   中英

無法解析基類服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM