请考虑以下代码:
public interface IService {}
public class ServiceOne : IService {}
public class ServiceTwo : IService {}
public class SomeClass
{
public SomeClass(IService service) {}
}
我已经在.Net Core IoC容器中注册了我所有的依赖项,并且一切正常,但是我无法弄清楚如何使用ActivatorUtilities类注册上述内容,并根据已知条件使其注入正确的IService。在运行时。
更具体地说,当IoC实例化SomeClass时,将发生如下所示的事情:
if(condition1 && condition2)
{
ActivatorUtilities.CreateInstance(ServiceOne);
}
else
{
ActivatorUtilities.CreateInstance(ServiceTwo);
}
我一直在查看ActivatorUtilities.CreateFactory,但我不明白如何使用这两种方法来完成此任务。
我发现了解决方法,但是由于上下文的原因,我被要求使用ActivatorUtilities类专门找到解决方案。
谢谢。
尚不清楚您要实现什么,但我认为它是这样的?
services.AddTransient<IService>(sp =>
{
if (condition1 && condition2)
ActivatorUtilities.CreateInstance<ServiceOne>(sp);
else
ActivatorUtilities.CreateInstance<ServiceTwo>(sp);
});