我想在满足某些条件时注入特定类型。例如,我有一个如下所示的界面。
public interface IMyInterface{
}
还有两个实现这个接口的类
public class MyClassA : IMyInterface {
}
和
public class MyClassB : IMyInterface {
}
最后,我有一些服务类将构造函数参数作为 IMyInterface。
public class ServiceA{
private IMyInterface _interfaceClass;
public ServiceA(IMyInterface interfaceClass){
_interfaceClass = interfaceClass
}
}
和
public class ServiceB{
private IMyInterface _interfaceClass;
public ServiceA(IMyInterface interfaceClass){
_interfaceClass = interfaceClass
}
}
现在由于一些架构限制,ServiceA 必须将 MyClassA 作为构造函数参数,而ServiceB 必须将 MyClassB 作为构造函数参数。
通常我使用如下所示的 Autofac
var builder = new ContainerBuilder();
builder.RegisterType<MyClassA>().As<IMyInterface>().InstancePerApiRequest();
但我找不到如何强制 Autofac 为特定类型选择正确的类型。我期待Named<>
功能,但无法解决问题。