いくつかの条件が満たされたときに特定の型を注入したい。たとえば、私は以下のようなインターフェースを持っています。
public interface IMyInterface{
}
また、このインターフェースを実装する 2 つのクラス
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<>
たが、問題を解決できませんでした。