注册 ASP.NET Core Web API 中未直接引用的类库依赖

问题描述 投票:0回答:1

我有一个带有类库的 ASP.NET Core Web API 项目。我可以注册类库的依赖项,这些依赖项直接作为引用添加到项目中。但我无法找到方法来注册未直接添加到项目中的类库的依赖项。

例如,如以下屏幕截图所示:

  1. 这是 ASP.NET Core Web API 项目。

  2. 它有一个类库

    FirstClasslib
    项目。

  3. 添加

    FirstClasslib
    项目作为对 ASP.NET Core Web API 项目的引用。

  4. FirstClasslib
    项目具有
    SecondClasslib
    项目的dll引用。

  5. SecondClasslib
    也是一个带有接口及其实现的库,如下图所示:

我想通过 DI 注册

SecondClasslib
的依赖项,就像我为
FirstClasslib
所做的那样。但由于它没有直接链接到 ASP.NET Core Web API 项目,我该怎么做?

请在 https://github.com/sujadkar/WebApplication1

找到源代码存储库

我尝试了

BuildServiceProvider
方法,但很多人说这是反模式,我们应该避免。我想使用依赖注入来解决
SecondClasslib
的依赖关系。

c# .net-core dependency-injection asp.net-core-webapi class-library
1个回答
0
投票

如果您不希望您的 API 项目添加对

SecondClassLib
的引用,那么在您的
FirstClassLib
项目中,创建一个如下扩展方法:

public static class MyExtension
{
    public static IServiceCollection AddSecondClassLibServices(this IServiceCollection services)
    {
        // register all services here
        services.AddScoped<ISecondClass, SecondClassImplementation>();
        return services;
    }
}

然后在您的 Web API 项目中,使用:

builder.Services.AddSecondClassLibServices();

对于多个项目,您需要一个 compose 根项目来注册上述所有服务,并需要您的主项目来引用该项目

© www.soinside.com 2019 - 2024. All rights reserved.