c# - 如何在.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。有什么办法可以用不同的参数注册同一个接口?
我已经查看了这里提出的所有相关问题,但所有要求都不同,因为它们中的大多数都有不同的类来实现它们。
解决方案
据我所知,内置 DI 无法做到这一点。要解决它,您可以使用Autofac
例如,它允许这种情况。在 asp .net 核心中,您必须将Autofac 设置为 DI 容器。接下来,您可以注册同一接口的多个实现。解决那些使用IEnumerable<T>
.
还有一件事——您不必考虑 DI 也不必强制执行 DI。DI 机制超出了您的兴趣。
推荐阅读
- notepad++ - 如何在文本中应用 \n 字符以自动换行
- c - 通过 snprintf 打开
- reactjs - Redux-Form 未正确连接到路由器
- javascript - 为什么在我单击按钮时在获取 prmise 和 this.setState 后打印控制台日志
- python - 将订阅中返回的 Stripe“created”字段转换为可在元数据中使用的日期
- node.js - 如何获取自动生成的 FeathersJS 服务来存储和检索 JSON 数据?
- angular - Angular CLI 的 Proxy.conf.json 无法按预期工作
- c# - 如何从 lambda 访问属性
- c++ - 找出迷宫求解器的最佳解决方案,并带有动画输出
- python - 无法使用自定义约束加载 keras 模型