为了账号安全,请及时绑定邮箱和手机立即绑定

如何注册两个实现然后在 .Net Core 依赖注入中获取一个

如何注册两个实现然后在 .Net Core 依赖注入中获取一个

C#
忽然笑 2021-07-01 13:44:56
我的代码部分依赖于同一接口的多个实现,而其他部分依赖于其中一个实现。我正在注册以下实现:services.AddSingleton<MyInterface, FirstImplementation>();services.AddSingleton<MyInterface, SecondImplementation>();然后在需要时获取两种实现,例如:var implementations= serviceProvider.GetServices<MyInterface>();我的问题是当我需要其中之一时,我正在尝试以下返回空值的方法:var firstImplementation= serviceProvider.GetService<FirstImplementation>();我当然可以使用:var implementations= serviceProvider.GetServices<MyInterface>();foreach (var implementation in implementations){    if (typeof(FirstImplementation) == implementation.GetType())    {        FirstImplementation firstImplementation = (FirstImplementation)implementation;    }}但我想我可以FirstImplementation 以某种方式直接得到我的。
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

实际上你所做的不是一个好习惯,你可以创建两个不同的接口继承自你的基本接口(MyInterface),然后在适当的接口上注册对应的每个实现,然后在你需要特定实现的代码部分你可以从 IoC 那里询问 go 给你重要接口的具体实现:

执行

public interface IFirstImplementation:MyInterface {}
public interface ISecondImplementation:MyInterface {}

注册

services.AddTransient<IFirstImplementation, FirstImplementation>();
services.AddTransient<ISecondImplementation, SecondImplementation>();

用法

var firstImplementation= serviceProvider.GetService<IFirstImplementation>();


查看完整回答
反对 回复 2021-07-03
  • 3 回答
  • 0 关注
  • 236 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信