在.NET中我们可以定义接口的多种实现,可以多次注入,但是在使用时候会发现它只会默认获取最后一次注入的实现类。这个自然是没有什么问题,但是当我们想要获取到其它实现时可以利用以下方法来实现:
例如接口
public interface IDemoService
{
void Run();
}
(1)通过总接口IServiceProvider 来获取
public void Resolve(IServiceProvider provider)
{
foreach (var sv in provider.GetServices<IDemoService>())
{
//to do
}
}
(2)通过获取IEnumerable来实现
public void Resolve(IEnumerable<IDemoService> svs)
{
foreach (var sv in svs)
{
//to do
}
}
以上就是全部内容。