【问题标题】:Dependency Injection in Class Library(.NET Standard 5 ) and Missing Startup.cs类库(.NET Standard 5)中的依赖注入和缺少 Startup.cs
【发布时间】:2023-04-05 02:16:01
【问题描述】:

我想在基于 .NET Standard 5 的类库中使用依赖注入。此外,类库没有 startup.cs 文件,因此我无法注入我的依赖项。

这里有什么我遗漏的吗?

请多多指教。

【问题讨论】:

  • 首先,清楚地确定您要使用的内容。 没有 .NET Standard 5 这样的东西。此外,依赖注入通常是“宿主”应用程序的责任,而不是类库需要/应该关心的事情。
  • 一些库提供了扩展方法,“主机”应用程序可以调用这些扩展方法,使库向应用程序启动的 DI 容器注册自身。
  • 你应该看看我的that答案
  • 作为解决方案一部分的类库与独立发布(可能通过 NuGet)的类库之间存在很大差异。如果类库是(单一)解决方案的一部分,答案是您将注册放在Composition Root 中。但是,如果该库是一个单独的可部署库,则应遵循 DI-friendly libraries 的做法。

标签: .net dependency-injection .net-standard


【解决方案1】:

一种选择是为IServiceCollection 编写一个扩展方法来注册您的依赖项。比如:

public static class ServiceCollectionExtensions
{
    public static IServiceCollection AddServices(this IServiceCollection services)
    {  
        return services
            .AddTransient<IService1, Service1>()
            .AddTransient<IService2, Service2>();
    }
}

使用您的库的应用程序有责任调用此方法来注册依赖项。

【讨论】:

  • 和/或IApplicationBuilder的扩展
猜你喜欢
  • 2017-09-25
  • 1970-01-01
  • 2017-05-10
  • 2022-07-15
  • 1970-01-01
  • 2017-07-29
  • 2020-08-11
  • 2023-02-24
  • 2020-04-14
相关资源
最近更新 更多