У меня есть код, похожий на этот:
class A: IA { ... }
class B: IB {
public B(IA a, ...) { ... }
...
}
class C1 {
public C1(IA a, IB b, ...) { ... }
}
class C2 {
public C2(IA a, IB b, ...) { ... }
}
Я хочу только два экземпляра A — один для C1 и один для C2. Мне нужны два экземпляра B. Экземпляр B, переданный C1, должен получить тот же экземпляр A, созданный для C1. C2 и его параметры должны иметь другой экземпляр A. Как я могу настроить этот сценарий в Autofac? Похоже, что функция времени жизни принадлежащего экземпляра должна была справиться с этим, но опубликованный пример был только одним слоем. глубокий, а не два.
Моя реальная ситуация намного сложнее. У меня есть дюжина наследников IB и полдюжины определений C, которые принимают различные комбинации наследников IB. Я хотел избежать использования именованных экземпляров, потому что это значительно раздуло бы мой загрузчик и затруднило бы его обслуживание.
Второстепенный вопрос: поддерживает ли DryIoc это? Меня можно было бы уговорить переключиться.