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

我的代码部分依赖于同一接口的多个实现,而其他部分依赖于其中一个实现。


我正在注册以下实现:


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 以某种方式直接得到我的。


忽然笑
浏览 240回答 3
3回答

慕莱坞森

实际上你所做的不是一个好习惯,你可以创建两个不同的接口继承自你的基本接口(MyInterface),然后在适当的接口上注册对应的每个实现,然后在你需要特定实现的代码部分你可以从 IoC 那里询问 go 给你重要接口的具体实现:执行public&nbsp;interface&nbsp;IFirstImplementation:MyInterface&nbsp;{} public&nbsp;interface&nbsp;ISecondImplementation:MyInterface&nbsp;{}注册services.AddTransient<IFirstImplementation,&nbsp;FirstImplementation>(); services.AddTransient<ISecondImplementation,&nbsp;SecondImplementation>();用法var&nbsp;firstImplementation=&nbsp;serviceProvider.GetService<IFirstImplementation>();
打开App,查看更多内容
随时随地看视频慕课网APP