[英]How to register multiple implementations of the same interface in Asp.Net Core?
[英]How to register same interface multiple times in .Net Core?
我正在嘗試以不同方式注冊由同一個 class 實現的 2 個接口。 我當前的實現如下所示
IInterface1: ServiceClass
IInterface2: ServiceClass
,其中 IInterface2 繼承自 IInterface1
然后在我的 Startup.cs 中,我將它們注冊為
services.AddScoped<IInterface1>(x => {return ServiceClass(ConnectionString1)})
services.AddScoped<IInterface2>(x => {return ServiceClass(ConnectionString2)})
問題是我正在創建一個庫,所以我不希望有一個冗余接口。 理想情況下,我想從庫中刪除 IInterface2。 有什么辦法可以用不同的參數注冊相同的接口嗎?
我查看了此處提出的所有相關問題,但所有要求都不相同,因為其中大多數都有不同的類來實現它們。
據我所知,內置 DI 無法做到這一點。 要解決它,您可以使用Autofac
,例如,它允許這種情況。 在 asp .net 核心中,您必須將Autofac 設置為 DI 容器。 接下來,您可以注冊同一接口的多個實現。 要解決這些問題,請使用IEnumerable<T>
。
還有一件事——您不必考慮 DI 也不必強制執行 DI。 DI 機制超出了您的興趣范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.