Jakeuj's Notes master Help

ABP.IO WEB應用程式框架 DI 單一介面多個實作

簡單筆記下如何統一呼叫共用介面的複數實作 (class)

結論

ITestManager

public interface ITestManager { string GetString(); }

OneManager

public class OneManager : ITestManager { public string GetString() => "One"; }

TwoManager

public class TwoManager : ITestManager { public string GetString() => "Two"; }

TestDomainModule

public class TestDomainModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { // 手動新增 DI 設定 context.Services.AddTransient<ITestManager, OneManager>(); context.Services.AddTransient<ITestManager, TwoManager>(); } }

TestDomainTests

[Fact] public async Task Should_Get_Two_Results_From_ITestManager() { var managers = GetRequiredService<IEnumerable<ITestManager>>(); var results = managers.Select(manager => manager.GetString()).ToList(); results.Count.ShouldBeGreaterThan(1); _testOutputHelper.WriteLine(string.Join(",",results)); }
1677825290 png

重點

  1. 手動註冊每個實作到該介面

  2. 改取得 IEnumerable 該介面

參照

依賴注入 |文檔中心 |總部基地。IO (abp.io)

Jakeuj

PS5

  • 回首頁

本文章從點部落遷移至 Writerside

13 October 2025