Asp.net-Core

類庫中 .NET Core 中的依賴注入

  • April 27, 2020

如何在 .NET Core 庫項目中將一個類註入到另一個類中?我應該在哪裡配置 DI,因為它在 API 項目的 StartUp Class ConfigureServices 中完成?

關於如何管理它有很多思考過程,因為最終,呼叫者將需要為您註冊您的 DI 流程。

如果您查看 Microsoft 和其他人使用的方法,您通常會使用諸如“AddMyCustomLibrary”之類的方法定義的擴展方法作為 IServiceCollection 的擴展方法。這裡有一些討論。

在Google上搜尋了很多之後,我找不到這個問題的例子的全面答案。這是在類庫中使用 DI 應該做的事情。

在您的圖書館中:

public class TestService : ITestService
{
   private readonly ITestManager _testManager;

   public TestService(ITestManager testManager)
   {
       _testManager = testManager;
   }
}

public class TestManager : ITestManager 
{
   private readonly ITestManager _testManager;

   public TestManager()
   {
   }
}

然後在庫中擴展 IServiceCollection:

public static class ServiceCollectionExtensions
{
   public static void AddTest(this IServiceCollection services)
   {
       services.AddScoped<ITestManager, TestManager>();
       services.AddScoped<ITestService, TestService>();
   }
}

最後在主應用 StartUp(API、控制台等)中:

   public void ConfigureServices(IServiceCollection services)
   {
       services.AddTest();
   }

引用自:https://stackoverflow.com/questions/61461799