首页 > 解决方案 > 如何在.Net Core中多次注册相同的接口?

问题描述

我正在尝试注册由同一类以不同方式实现的 2 个接口。我当前的实现如下所示

IInterface1 : ServiceClass

IInterface2 : ServiceClass,其中 IInterface2 继承自 IInterface1

然后在我的 Startup.cs 中,我将它们注册为

services.AddScoped<IInterface1>(x => {return ServiceClass(ConnectionString1)}) services.AddScoped<IInterface2>(x => {return ServiceClass(ConnectionString2)})

问题是我正在创建一个库,所以我不希望有一个冗余接口。理想情况下,我想从库中删除 IInterface2。有什么办法可以用不同的参数注册同一个接口?

我已经查看了这里提出的所有相关问题,但所有要求都不同,因为它们中的大多数都有不同的类来实现它们。

标签: c#.net.net-coredependency-injection

解决方案


据我所知,内置 DI 无法做到这一点。要解决它,您可以使用Autofac例如,它允许这种情况。在 asp .net 核心中,您必须将Autofac 设置为 DI 容器。接下来,您可以注册同一接口的多个实现。解决那些使用IEnumerable<T>.

还有一件事——您不必考虑 DI 也不必强制执行 DI。DI 机制超出了您的兴趣。


推荐阅读